From c53a2ea070b48ecd9fbdba1f0851510a01efef89 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: Mon, 16 Oct 2023 11:13:57 +0800
Subject: [PATCH] 增加大华sdk依赖库

---
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RUN_PHASE_INFO.java                                        |   45 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BACKUP_STATES_INFO.java                                |   10 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MULTIFACE_DETECT_STATE.java                         |   45 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_FIND_REC_BAK_RST_TASK.java                         |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TIME_EX.java                                           |   58 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_CONFIG_INFO.java                                 |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPECIAL_DATE_PLANS_INFO.java                           |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_DISABLE_LINKAGE_TIME_SECTION.java                  |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITOR_WALL_DEVICE_INFO.java                          |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_GET_DEVLIST.java                             |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SHIELD_ZOOM_CAPS.java                                  |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVICE_FAULT_INFO.java                                 |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABINET_WORKTIME.java                        |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_RECTLOCATE_INFO.java                        |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PASS_MODE.java                                        |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSE.java                                  |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PIG_TEMPERATURE_DATA.java                              |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DVR_VIDEOOSD_CFG.java                                  |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IMAGE_LIGHT_TYPE.java                                 |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MONITORWALL_COLLECTION_SCHEDULE.java                       |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/ALARM_RTSC_RUNNING_INFO_V1.java                  |   80 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_XRAY_PACKAGE_STATISTICS_INFO.java                   |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECTION_SCENE_TYPE.java                             |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SCADA_NOTIFY_POINT_ALARM_INFO_EX.java                  |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GPS_INFO_EX.java                                       |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_ACCESS_CALL_LIFT.java                             |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SPLIT_SET_HIGHLIGHT.java                            |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CHANNELS_STATE.java                             |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/BYTE_40.java                                               |   13 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_FIND_GROUP_FROM_VEHICLE_REG_DB.java                |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LEAKAGE_DETECT.java                                    |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_WATERCOLOR_DETECTION_INFO.java                   |   82 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NET_TIME.java                                          |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVE_ACIONANAYLSE_INFO.java                           |  112 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_HEAD_DIRECTION.java                           |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ObjectUrl.java                                             |   14 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_LOCATION_CALIBRATE_INFO.java                           |   53 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STARTFIND_DIRECTION.java                              |   61 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_IMAGE_OFFSET_INFO.java                           |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEFAULT_REAL_CHANNEL.java                       |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DISPLAY_OPTIONS_INFO.java                              |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_RULECONTENT_TRIGGER_TIMER.java                  |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE.java           |   75 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT_INFO.java        |   90 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_INFO.java                               |  302 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BATTERY_INFO.java                                      |   52 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/controller/DhSdkController.java                                          |  183 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HKIMAGESERVER_INFO.java                                |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_OVERSPEED_RULE_INFO.java                       |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SHAPE_TYPE.java                                       |   65 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CUSTOM_DEV_VIDEO_INPUTS.java                           |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CROSSREGION_RULE_INFO.java                             |   83 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_DAHUA_RADAR_CONFIG.java                                |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_DEVREPLACE.java                      |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_FIND_VEHICLE_REG_DB.java                      |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STOP_FIND_DETAIL_CLUSTER_INFO.java                 |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_DAY3GFLUXACTION.java                              |   52 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PERSON_FREQUENCY_INFO.java                             |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_ALARMMODE.java                                 |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_RFIDCARD_CONFIG.java                             |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_RADAR_CONFIG.java                                      |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER_MODIFIED_INFO.java                          |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEMPERATURE_UNIT.java                                 |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_OUTPUT_STATE.java                              |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BYPASSMODE_TYPE.java                                  |   68 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_ORDER.java                                      |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FACERECOGNITION_INFO_V1.java                     |   65 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MONITORWALL_GET_ENABLE.java                        |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AUDIO_SOURCE_FLAG.java                                |   51 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PUSH_ANALYSE_PICTURE_FILE_BYRULE.java              |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_DEVICE_LOG_ITEM.java                                   |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RuleTypeByteArr.java                                       |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_BADGE.java                                        |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_SAMPLE_INFO.java                              |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NETAPP_WLAN.java                                       |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HISTORY_NON_MOTOR_INFO.java                            |   59 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FAN_STATUS.java                                        |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRANSFER_SUBLINK_INFO.java                         |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_TRAFFIC_LIGHT_STATUS.java                            |   61 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BUTTON_ALARM_TYPE.java                                |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NTP_STATUS.java                                       |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ARM_OPTIONS.java                                       |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_STATUS.java                                     |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TALK_SEND_DATA_STREAM.java                         |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_MANUAL_TEST_INFO.java                            |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_POSITION.java                                 |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_VEHICLE_POSITION.java                        |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_ALARM_USER.java                              |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CONSUMPTION_STATUS.java                               |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POWER_STATUS.java                                      |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PRIVACY_MASK_TYPE.java                                |   52 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_STORAGEBOX_TYPE.java                           |   75 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CREATE_TRANSMIT_TUNNEL.java                        |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_CANDIDATE.java                            |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_LEAKCURTPOSTASYNC.java               |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PRIVACY_MASKING.java                            |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_WIEGAND_TRANSFER_MODE.java                        |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AUTO_HOMING.java                                       |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNEL_INFO.java                                      |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_FIND_DETAIL_CLUSTER.java                      |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_RADAR_REGION_DETECTION_INFO.java                 |  159 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_FACERECOGNITION_INFO.java                    |   16 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_WIRELESSDEV_LOWPOWER_INFO.java                       |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZ_CURRENT_FOV_VALUE.java                         |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ASSOCIATED_RECORD_SOURCE.java                         |   46 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SHOP_WINDOW_POST_INFO.java                       |   92 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_JAM_RULE_INFO.java                             |   75 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_PARKING_RULE_INFO.java                         |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_MOVEDDETECT_CAP.java                             |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER_PASS_CONFIRM_INFO.java                      |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ADAPTIVE_DOWNLOAD_BY_TIME.java                     |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_BODY_TRAIT.java                                   |  113 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DOWNLOAD_BYFILE_SELFADAPT.java                      |  106 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POINT_EX.java                                          |   15 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_QRCODE_IS_EXPIRED.java                                |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SPLIT_GET_OSD_EX.java                               |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RAID_ERR_DETAIL_INFO.java                              |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_HOLDUMBRELLA_INFO.java          |   95 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_BACKUP_STATE.java                           |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_AUDIO_DECODE_CAPS.java                             |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/securityCheck/fSecurityGateAttachAlarmStatistics.java       |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CLUSTER_DETAIL_CONDITION.java                          |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PARKINGSPACE_STATE_INFO.java                    |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_AUDIO_PLAY_PATH.java                               |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RETROGRADE_DETECTION_RULE_INFO.java                    |   60 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WATERDATA_STAT_SERVER_INFO.java                        |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANATOMY_TEMP_DETECT_ANATOMYTEMPDETECT_RESULT.java      |   16 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_INFO_ARRAY.java                                 |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_HEAD_LIFT_DETECTION.java             |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_CHANNELS_INFO.java                        |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_IVSEVENT_NEXTFIND_INFO.java                         |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_ACTION_TYPE.java                               |   62 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_TIME_RECORDBACKUP_RESTORE_INFO.java                |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NUMBER_STAT_INFO.java                                  |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OVERSEA_VEHICLE_CATEGORY_TYPE.java                    |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_OPEN_INFO.java                              |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NEXT_STEP_INFO.java                                        |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/UNPACKING_CHECK_INFO.java                                  |   89 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_VIDEOSTAT_HEATMAP.java                              |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DOWNLOAD_PIECE_FILE.java                            |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_TSECT.java                                             |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SMOKE_INFO.java                                  |  158 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NOHAT_ATTRIBUTE.java                                   |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_INFRARED_BLOCKING.java                                 |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_AIRSWITHFIND.java                    |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOBILE_ENFORCE_UPLOAD_FLAG.java                       |   57 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_VAULTDOOR_STATE_INFO.java                       |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CGF_MASKING_INFO.java                                      |   61 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTIES_INFO.java                                   |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_PARKING_LOT_STATUS_DETECTION_INFO.java           |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_RADAR_INFO.java                                  |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PREVENTION_OF_ARMING_INFO.java                         |   62 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_RECORD_MODE.java                                  |   65 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_ALARM_FACE_INFO.java                      |   68 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_ADD.java              |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAN_START_STREAM.java                                 |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DYNAMIC_LOCK_ERRORCODE.java                           |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEVICETYPE_INFO.java                            |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_WATERDATA_STAT_SERVER_GETDATA_INFO.java             |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUBCLASSID_TYPE.java                                  |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WATER_DETECTION_UPLOAD_INFO.java                       |  105 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_SETCALIBRATION.java                          |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_QSYTRAFFICCARWEIGHT_INFO.java                    |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_DEV_PROTOCOL_TYPE.java                         |   79 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_RULECONTENT_TYPE.java                          |   62 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OPEN_STROBE_TYPE.java                                 |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_COURSE_RECORD_MODE.java                         |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COLOR_RGBA.java                                        |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSE_RECORD_COMPRESSION_TYPE.java                   |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOSAIC_TYPE.java                                      |   77 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANALYSE_TASK_MODULE.java                               |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/service/IDhClientService.java                                            |   80 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FLOORS_EX.java                                         |   13 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_REAL_PREVIEW_CHANNEL.java                      |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_AIRSWITHRESET.java                   |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ENTER_STATE_INFO.java                                      |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_DELRULE.java                         |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_POLLING_CONFIG.java                            |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/CANDIDATE_INFO_CEX.java                          |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTORINMOTORROUTE_INFO.java           |  110 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_NAS_CLOUDPROTOCOL_TYPE.java                       |   60 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE.java                |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BACKUP_SOURCE.java                                     |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARM_ONECLICKARMING_TRIGGEROPTION.java               |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ASYNC_ADD_CUSTOM_DEVICE.java                        |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EXPOWER_STATE.java                                    |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BAND_SPEED_INFO.java                                   |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_FIND_VEHICLE_REG_DB.java                     |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/LibraryLoad.java                                                     |  189 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SPACE_MODE_INFO.java                                   |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINGERPRINT_INFO.java                                  |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_PERSON.java                               |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STATISTICS_MODE.java                                  |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_HUMAN_ANIMAL_COEXISTENCE_INFO.java               |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_FLOW_STAT.java                                 |   61 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STOP_FIND_VEHICLE_REG_DB.java                      |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DIRECTION_AFTER_POWER_OFF.java                        |   48 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_INDOOR_ALARM_INFO.java                   |   45 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORTED_COLOR_LIST_TYPE.java                        |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PACKAGE_STATISTICS_BYTYPE.java                      |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CAMERA_PTZ_INFO.java                                   |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_SET_INFO.java                      |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSECOMPOSITE_CHANNEL_MODE_ADD_RESULT.java           |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTER_LOCK_CAPS.java                                   |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_CONFIG_NIGHT_INFO.java                           |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STARTSERACH_DEVICE.java                             |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UNIFIED_COLOR_TYPE.java                               |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STAFF_INFO.java                                        |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_AREATYPE.java                                |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_AVAILABILITY_DETECTIONRESULT.java                |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DOWNLOADFILE_INFO.java                                 |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_CLOSE_INFO.java                            |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_INPUT_CHANNEL_MEDIA.java                        |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MINI_RADAR_ALARMPOINTINFO.java                     |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_OVER_TEMPERATURE_ALARM_INFO.java                  |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COORDINATE_TYPE.java                                  |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CREAT_SUB_BUSINESS_MDL_INFO.java                    |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFICSTROBE_STATUS.java                             |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEMORY_STATUS.java                                     |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PERSON_FEATURE_VALUE_INFO.java                         |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_FLOW_STATE.java                                |  339 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STAT_GRANULARITY.java                                 |   52 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKINGSPACEOVERLINE_INFO.java           |   53 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_FINANCIAL_CABIN_INFO.java                       |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_SCENE_CAP.java                                   |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SEWAGE_DETECTION_INFO.java                       |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MULTI_APPEND_TO_VEHICLE_REG_DB.java                |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_WORKCLOTHES_RULE_TYPE.java                      |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_REMOTE_APPROVAL_ALARM_INFO.java              |   90 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_MODIFY.java           |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_AUTHMODE.java                                     |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DVR_VIDEOITEM.java                                     |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_FONTCOLOR.java                               |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/HUMAN_ATTRIBUTES_INFO.java                                 |  176 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_ALGORITHMTYPE_DETECTION.java                     |   51 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PTZ_MOVING_RESULT_TYPE.java                           |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DOWNLOAD_TIME_TYPE.java                               |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_OUT_PTZ_VIEW_RANGE_STATUS.java                          |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MSG_OBJECT_SUPPLEMENT.java                             |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB.java             |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OPEN_INTELLI_INFO.java                           |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_UNDERSPEED_RULE_INFO.java                      |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_PACKET_TYPE.java                              |    7 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL.java                  |   90 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CONSUMPTION_STRATEGY_INFO.java                     |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_HOTSPOT_WARNING_INFO.java                            |   46 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_ACCESS_CTL_CONSUMPTION_INFO.java                |  133 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACTIVITY_ANALYSE_CAPS.java                             |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_CROWD_DISTRI_MAP.java                        |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_USER_INFO_EX.java                               |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DO_FIND_WATERDATA_STAT_SERVER_INFO.java             |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_LOWRATEWPAN_REMOVEALL.java                        |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MINI_RADAR_ALARMPOINT_INFO.java                        |   98 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_ILLEGAL_CARRIAGE_INFO.java                   |  122 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GATE_TYPE.java                                        |   58 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_REAREND_ACCIDENT_INFO.java               |   86 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_CROSSLANE_RULE_INFO.java                       |   76 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_UPDATE_INFO.java                    |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_UNIFIEDINFOCOLLECT_GET_DEVSTATUS.java               |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VIDEOTALK_SIGNLIGHT.java                           |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OUTDOOR_ADVERTISEMENT_INFO.java                  |  106 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPEED_LIMIT.java                                       |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSECOMPOSITE_OPERATE_TYPE.java                     |   84 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_QUERULE.java                        |   61 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/EVENT_MANUALSNAP_PARKING_INFO.java                         |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_ATS_FAULT_INFO.java                              |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WEEK_PLAN_INFO.java                                    |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANIMAL_OBJECTS_STATISTICS.java                         |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VAULT_LOCKSTATE.java                                  |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_INFO.java                                        |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_DETECT_OBJECT_TYPE.java                         |   49 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LIGHTGROUP_FAULT_LEVEL.java                           |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ACCESSCONTROL_CAPTURE_NEWCARD.java                  |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MAIN_PAGE_STATE.java                                  |   76 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PARKING_STATISTICS_INFO.java                           |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNEL_STATE_INFO.java                                |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_MEASURE_DISTANCE.java                              |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AUDIO_DATA_SOURCE_TYPE.java                           |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_LIGHT_STATE.java                               |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BEARD_STATE_TYPE.java                                 |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACTION.java                                           |   81 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_POPULATION_STATISTICS.java                     |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PRESSING_PLATE_STATE.java                             |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MULTI_APPEND_TO_WORKSUIT_GROUP.java                 |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PROFILE_INFO.java                                      |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_GET_RFID_MODE.java                            |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GET_CONDITION_INFO.java                                |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_USER_PICTURE_DATA.java                                 |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STJ77D5_RADAR_CONFIG.java                              |   45 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DHDEV_SMART_VALUE.java                                     |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_NOPLATE.java                              |   13 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_APRON_ATTRIBUTE.java                                   |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NONMOTOR_STAY_STAT.java                                |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CUSTOM_PROJECTS_INFO.java                              |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_OBJECT_FILTER_TYPE.java                           |   52 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_DISK_PREDISKCHECK.java                        |   13 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AUDIOOUT_VOLUME_INFO.java                              |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ACCESSCONTROL_CAPTURE_NEWCARD.java                 |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RIOTERDETECTION_RULE_INFO.java                         |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_REDIRECT_SERVICE.java                         |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IPC_TYPE.java                                         |  122 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_STAT_EX_INFO.java                             |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_AREA_ARM_MODE_INFO.java                            |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MAKE_TOKEN.java                                     |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IS_ENCRYPT.java                                       |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKPANTS_STATE.java                                  |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSERECORD_SETINFO.java                          |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMOKE_COLOR.java                                      |   58 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_ALARMMODE.java                                 |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_MULTILEVEL_DETECT_CFG_INFO.java                   |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLEINOUT_CAR_TYPE.java                            |   81 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ADD_REC_BAK_RST_REMOTE_TASK.java                   |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_HEATMAPS_INFO.java                             |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SUPPORTED_COMP.java                                    |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PRIVACY_MASKING_INFO.java                              |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CLUSTER_STATE_INFO.java                        |   35 
 lib/hikDll/ClientDemoDll/ReadMe.txt                                                                                    |    1 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_TRAFFIC_CAR_CONTROL_TYPE.java                     |   58 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_ALARM_TYPE.java                                 |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DO_FIND_WATERDATA_STAT_SERVER_INFO.java            |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RECT.java                                                  |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_GAVI_INFO.java                                 |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STAT_DETAIL.java                                       |   46 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OPERATION_MODE.java                                   |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_ALARM_INFO.java                           |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STOP_FIND_WATERDATA_STAT_SERVER_INFO.java           |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETECTOR_SETTING_INFO.java                             |   45 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/STEP_INFO.java                                             |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/QUERY_DEVICE_LOG_PARAM.java                                |   49 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RFIDELETAG_INFO.java                                   |  103 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UPDATE_TYPE.java                                      |   69 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACECOMPARISON_PTZ_INFO.java                           |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILE.java                        |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_UPLOAD_UPPACKING_CHECK_INFO.java                    |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_FACEDETECT_TYPE.java                              |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_HEATMAPS_INFO.java                              |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_EXAM_RECORDING_PLANS.java                      |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CURRENT_STATE_TYPE.java                               |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FAN_INFO.java                                          |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_MODIFY.java            |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GLASSES_RELATED_INFO.java                              |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_CONSUME_RESULT.java                             |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_VIDEOIN_DAYNIGHT_CAPS.java                         |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX.java                              |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_LATTICE_SCREEN_LOGO_INFO.java                  |   15 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CREATE_TRANSMIT_TUNNEL.java                         |   52 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SOURCE_MODE.java                                      |   45 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_ARC_OFFLINE_INFO.java                            |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AC_UNLOCK_MODE.java                                   |  239 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_GET_CENTER_GPS.java                         |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_DISK_POWERMODE.java                           |    9 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_TRAFFIC_UNDERSPEED_INFO.java                           |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_FACE_SNAP_POLICY.java                             |   72 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CYCLE_SETTINGS_INFO.java                               |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_TRANSMIT_INFO.java                                  |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_FLOW_STATUS.java                              |   65 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_FIND_DETAIL_CLUSTER.java                     |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ADAPTIVE_DOWNLOAD_BY_TIME.java                      |   96 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_STARTUPGRADE.java                             |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VSP_GAYS_INFO.java                                     |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_NETWORK_INFO.java                                  |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_ALARM_POSITION.java                      |   69 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_THROW_INFO.java                          |   91 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_BGY_CUSTOMERCFG.java                               |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NAS_INFO_NEW.java                                      |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LANE_STATE_INFO_EX.java                                    |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LINK_INFO.java                                         |   51 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_PRESET.java                                |   47 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_WATERDATA_STAT_SERVER_GETDATA_INFO.java            |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DOWNLOAD_BYFILE_SELFADAPT.java                     |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_INTELLIPARKING.java                  |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ENTRY_TYPE.java                                       |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DAY_PLAN_INFO.java                                     |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GPS_POSITION.java                                      |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NETAPP_COMMUNICATION_LIST_CFG.java                     |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_PROTOCAL_CAP.java                                |   46 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_TRAFFICFLOWSTAT_OUT.java                                |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CUSTOM_MEASURE_TEMPER.java                             |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WANDERDETECTION_RULE_INFO.java                         |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_USE_PROPERTY_TYPE.java                                |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GROUP_GRADE_TYPE.java                                 |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VSP_GAVI_CHANNEL_INFO.java                             |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TALK_SEND_DATA_FILE.java                           |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WATER_DETECTION_ALARM_TYPE.java                       |  126 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_LIGHT_STATE_INFO.java                        |   81 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WLAN_SCAN_AND_CONFIG_TYPE.java                        |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_CROSSLINE_STAT_INFO.java                     |   82 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_VALVECONTROL.java                   |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ANTI_MISPRESS_TYPE.java                               |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HUMAN_TEMPERATURE_INFO.java                            |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LANE_LIST_INFO.java                                    |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THERMAL_IMAGE_MEASURE_MODE_PARAM.java                  |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_VIDEO_COMPRESSION.java                            |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_MANAGE_INFO.java                          |   80 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_SERVICE_TYPE.java                              |  118 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GUIDE_MODULE_MEASURE_MODE_PARAM.java                   |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSERECORD_SETINFO.java                           |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EVENT_USER_TYPE.java                                 |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVE_LEAVE_INFO.java                                  |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_TRACK_INFO.java                            |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_GLOBAL_PARAMETER.java                           |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PACKAGE_INFO.java                                      |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RESPIRATOR_DETECT.java                                 |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_INSIDESUBTOTAL_INFO.java                     |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_LOWRATEWPAN.java                            |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AUTO_PROTECT_WEEK.java                                |   61 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_FILE_INFO_BY_PATH_INFO.java                    |   62 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CLUSTER_DETAIL_FIND_INFO.java                          |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_QUEUE_INFO.java                                    |   59 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_NUMBERSTAT_INFO.java                             |  116 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER_EXTERN.java                                 |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DEV_IO_STATS.java                                  |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ENCODE_CFG_CAPS.java                                |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_FOCUS_MODE.java                               |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_STATUS.java                                     |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_VISIBILITY_INFO.java                     |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CAMERA_INFO.java                                |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MIX_SNAP_SPEED_SOURCE.java                            |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_RUN_STATE.java                    |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_BACKUP_MODE.java                                |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_CONNECT_STATE.java                             |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_COURSECOMPOSITE_MODE_OPERATE_TYPE.java               |   79 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_DEVICE_LOG_ITEM_EX.java                                |   82 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_EVENT.java                                         |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_STREAM_TYPES.java                                 |   72 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MULTI_APPEND_TO_VEHICLE_REG_DB.java                 |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BOOT_ATTRIBUTE.java                                    |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ObjectPath.java                                            |   15 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GOTO_PRIVACY_MASKING.java                          |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PARTITION_TYPE.java                                   |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEMPERATUREEX_TYPE.java                               |   80 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_PARAM.java       |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_LIGHTING_CONTROL.java                              |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_ADDRULE.java                         |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NOTIFY_INFO.java                                       |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MASK_STATE_TYPE.java                                  |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTY_LIST_INFO.java                                |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/EVENT_PLATE_INFO.java                                      |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_GET_HFOV_VALUE.java                         |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_TRAFFICLIGHT_INFO.java                      |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TIME_SECTION_6.java                                        |   11 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MASK_TYPE.java                                        |    7 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL_LANES.java                         |   62 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_COURSE.java                                  |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OUTPUT_STATE.java                                     |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_AIRSWITHRESET.java                  |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/IDENTITY_INFO.java                                         |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTELLIPARKING_PLANAREA_INFO.java                      |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_SHOWMODE.java                                |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MONITORWALL_GET_ENABLE.java                         |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSUIT_APPEND_ERRCODE.java                          |   81 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IVS_DIALRECOGNITION_RULE_INFO.java                     |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MINI_RADAR_ALARMPOINTINFO.java                      |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LOOPPLAYBACK_AUDIOALARM_INFO.java                      |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_ELETAGINFO_INFO.java                     |   59 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_CANDIDATE_INFO.java          |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFIC_SNAP_STROBE_INFO.java                      |  101 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_ABNORMAL_TYPE.java                             |   53 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SCREEN_TEXT_ROLL_MODE.java                            |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LOCAL_SERVER_NET_INFO.java                             |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FACE_TRAIT_EMOTION_TYPE.java                          |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_ENUM_INPUT_CHANNEL_MEDIA.java                        |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_WLAN_INFO.java                                         |   95 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMM_ATTACHMENT_TYPE.java                             |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_ENCODER_INFO.java                                      |  138 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FACEBODY_DETECT_CAPS.java                                  |   46 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EVENT_DEVICE_TYPE.java                               |   48 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_TEMP_USERID_INFO.java             |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_INPUT_CHANNEL_MEDIA.java                       |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_BLIND_REAL_CHANNEL.java                         |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MULTIFACE_DETECT_STATE.java                        |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRANSMIT_CMD.java                                  |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ANGLE_TYPE.java                                       |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_BAG.java                                          |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_AUDIO_DECODE_CAPS.java                              |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_RUNNING_MODE.java                               |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_2DCODE.java                                     |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CREATE_WORKSUIT_COMPARE_GROUP.java                 |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_ELEMENT.java                              |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_LOG_ITEM.java                                           |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_3GFLUXTACTIC.java                                 |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASES_INFO.java                                       |  100 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_ALARM_USER.java                             |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_USER_DEF_TITLE_INFO.java                               |   47 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_OPEN_CODE_INFO.java               |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSERECORD_OPERATE_TYPE.java                        |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OBJECT_REMOVAL_DETECTION_INFO.java               |   90 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_NAS_DIRECTORY_GET_INFO.java                         |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESSORY_SENSITIVITY.java                            |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFICCAR_MOVE_DIRECTION.java                        |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AUDIO_DECODE_FORMAT.java                               |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IDCARD_MSG_TYPE.java                                  |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LAMP_INFO.java                                             |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LANE_CTRL_STATE.java                                       |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/OneDimensionalInformation.java                             |   13 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/fVideoStatHeatMapCallBack.java                              |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORK_HELMET_STATE.java                                |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AREAALARM_TRIGGER_TYPE.java                           |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CATEGORY_NONMOTOR_TYPE.java                           |   82 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FOLLOW_CAR_ALARM_CUSTOM_INFO.java                      |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_GET_NETSTATE.java                           |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CHANNEL_WIDTH.java                                    |   57 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BARRIER_LIST_INFO.java                                 |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAVEL_INFO.java                                       |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_OPENKEY_INFO.java                 |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESS_SENSOR_TYPE.java                               |   51 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CALL_ACTION_TYPE.java                                 |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_MODRULE.java                         |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SHOP_SIGN_ABNORMAL_INFO.java                     |   94 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COLLECTIVITY_STATE.java                               |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FIREPROOF_CLOTHES_STATE.java                          |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FIRE_LANE_MOVE_STATE.java                             |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_BACKUPTASK_STATE.java                               |   14 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GETSUMMARY_CROWDDISTRI_MAP_INFO.java               |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRIGGER_OCCUR_TYPE.java                               |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_COLDSPOT_WARNING_INFO.java                           |   45 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TOLLS_VEHICLE_TYPE.java                               |  122 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_HEAD.java                                         |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RADAR_SCREEN_RULE_INFO.java                        |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PERSON_INFO_INPUT_RESULT.java                      |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFICLIGHT_CHANNEL_INFO.java                         |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEDIA_QUERY_TRAFFICCAR_PARAM_EX.java                   |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IS_ERRORDETECT.java                                   |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_AIRSWITHFIND.java                   |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_DELDEVICE.java                      |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OPERATE_FACERECONGNITIONDB_TYPE.java                  |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEVICE_AII_INFO.java                            |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SUBBIZ_DISCONNECT_CALLBACK.java                        |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_MANUAL_TRACK.java                            |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_COURSE_RECORD_MODE.java                        |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_PRIVACY_MASKING.java                               |   62 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_OPEN_INFO.java                             |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_OVER_TEMPERATURE_INFO.java                       |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_GETCAPS.java                                  |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REMOTE_FILE_INFO.java                                  |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/ImageAlgLib.java                                                     |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZBASE_GET_VFOV_VALUE.java                        |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_TAMPER_STATE.java                                 |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_ENCODECAP.java                                   |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_PEDESTRAINRUNREDLIGHT_INFO.java          |  107 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PUSH_PICFILE_BYRULE_INFO.java                          |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_OBJECT_INFO.java                                  |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_WIRELESSDEV_LOWPOWER_TYPE.java                       |   82 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ENTER_INFO.java                                            |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PRE_UPLOAD_REMOTE_FILE.java                        |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSERECORD_GET_TIME.java                         |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_SEX_TYPE.java                            |   53 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_WLAN_NETWORK.java                                      |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO.java        |   63 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LIGHTPERIODS_INFO.java                                 |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/StringByteArrSixteen.java                                  |   15 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LANE_STATE_INFO.java                                       |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_LOSS_FRAME_DETECTION_RESULT.java                 |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_GET_LOCKINFO.java                  |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_METAL_CORROSION.java                                   |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZ_STATUS_PROC.java                               |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SDK_LOG_QUERY_TYPE.java                               |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_GLASS.java                                        |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LAN_TRAFFIC_INFO.java                                      |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_IN_CHANNEL.java                                  |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_VAGEOBJECT_ACTION.java                              |   61 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_ANYTHING_DETECT_INFO.java                        |   82 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VKINFO.java                                            |   46 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_MEDICAL_VOICE_TYPE.java                        |   86 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_COURSE_LOGIC_CHANNEL.java                       |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTELLIPARKING_PLANAREA_IDINFO.java                    |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_ANALYSE_ANALYSE_PROC.java                        |   63 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMART_VALUE_INFO.java                                  |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_PTZ_WASH_INFO.java                              |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_COURSE.java                                 |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INFRARED_MEASURE_MODE_PARAM.java                       |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SET_ALARMREGION_INFO.java                         |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VSP_GAYS_CHANNEL_INFO.java                             |   13 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TANK_STATUS.java                                      |   60 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_OBJECT_GROUP.java                                 |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_AREAR_INFO.java                                  |   15 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_TRAFFICLIGHT_INFO.java                       |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEVICESERIALNO_INFO.java                        |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ARMING_TYPE.java                                      |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_2DCODE.java                                    |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_MANNUMDETECTION_RULE_INFO.java                         |   16 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CITYMOTOR_STATUS.java                                 |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SD_ENCRYPT_FLAG.java                                  |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_PTZ_WASH_INFO.java                             |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_BREED_DETECTION_INFO.java                        |   76 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_VIFORMAT_TYPE.java                                |   69 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_HISTORYDATA.java                                |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCENICSPOT_TURNTOPOINT_INFO.java                   |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UPPER_TYPE.java                                       |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITOR_WALL_OUT_MODE_INFO.java                        |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_OPEN_CODE_INFO.java                |   28 
 ruoyi-admin/src/main/resources/application-dev-druid.yml                                                               |  114 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_PLATE_COLOR_TYPE.java                             |   94 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_BLIND_REAL_CHANNEL.java                        |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CALIBRATE_INFO.java                                    |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_STAT_INFO.java                          |   96 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_LEAKCURTPOSTASYNC.java              |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_AVAILABILITY_DETECTION.java                      |   14 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFIC_RADAR_GET_OBJECT_INFO.java                 |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DOWNLOAD_DATA_TYPE.java                               |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SPACE_TYPE.java                                       |   81 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EXTERNAL_WIFI_PRIORITY.java                           |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL_CALIBRATEAREA.java                 |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ARM_FAILED_DETAIL_EX.java                                  |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_COURSE_RECORD_STATE.java                        |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IVS_ELECTRICFAULT_DETECT_RULE_INFO.java                |   82 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_PIC_INFO_EX.java                                       |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SUPPORTED_RULES_INFO.java                              |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CAR_WEIGHT_INFO.java                                   |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_DELRULE.java                        |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DO_FIND_DETAIL_CLUSTER.java                        |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_OFFLINELOGCLEAN.java                 |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_INFRARED_INFO.java                                     |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_PLAY_MOBILEPHONE_INFO.java                       |  133 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_IVSEVENT_NEXTFIND_INFO.java                        |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SERVER_OPTION.java                                    |   94 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SNAPCATEGORY.java                                     |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_WORKSUIT_COMPARE_GROUP.java                 |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_CUSTOM_SNAP_INFO.java                       |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_AUDIO_ANOMALY.java                                   |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BATTERY_STATE.java                                    |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IMAGE_TYPE_EX2.java                                   |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_CLEANLINESS_INFO.java            |   69 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_ROAD_BLOCK_RULE_INFO.java                      |   48 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CTRL_LOWRATEWPAN_ACCESSORY_PARAM.java               |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_PRIVACY_MASKING_ENABLE.java                     |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAGEOBJECT_INFO.java                                   |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FIRE_LANE_DETECTION_INFO.java                    |  117 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_TYPE.java                                       | 1513 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACCESS_VOICE.java                                      |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPENDOOR_MATCHINFO_EX.java                             |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILECLOSE.java                   |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CAMERA_CFG.java                                 |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GETSUMMARY_REGION_LIST_INFO.java                       |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REGION_PEOPLE_STAT_INFO.java                           |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STOP_FIND_VEHICLE_REG_DB.java                       |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IS_CURRENT_VK.java                                    |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ENTER_LANE_STATE.java                                      |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_NOTIFY_RFIDCARD_INFO.java                        |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_IO_STAT_INFO.java                                  |   81 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCADA_GET_ATTRIBUTE_INFO.java                       |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NUMBERSTAT_MULT_INFO.java                              |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DELETE_VEHICLE_CONDITION_INFO.java                     |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_VIDEO_STATISTICS.java                       |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_VARLANELIST_INFO.java                     |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PRESSING_PLATE_DETECT.java                             |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE.java              |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_VEHICLE_STOP_INFO.java                        |   63 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CHANNEL_TIME_SECTION.java                              |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_LIST_INFO.java                                   |   96 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMPLIANCE_STATE.java                                 |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_FATIGUE_DRIVING.java                                   |   47 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_VOLUME_TYPE.java                                     |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PTZ_WASH_POSISTION_INFO.java                    |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_CROWDDISTRI_MAP_INFO.java                    |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_RECT_REGION.java                                        |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SHOES_TYPE.java                                       |    9 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMMON_SEAT_TYPE.java                                 |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEFAULT_REAL_CHANNEL.java                      |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CALLLIFT_ACTION.java                                  |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_HELMET_TYPE.java                              |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEO_STREAM.java                                     |   59 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_INFO.java                       |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GLOVE_ATTRIBUTE.java                                   |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WIRELESS_DEVICE_MODE.java                             |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTIES_NAME.java                                   |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/NetSDKLib.java                                                       | 37330 +++++++++++++++
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NONMOTOR_OBJECT_STATUS.java                           |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEO_TYPE.java                                       |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAVELCODE_COLOR_STATE.java                           |    9 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SCENE_MODE_INFO.java                                   |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_NETAPP_GET_MOBILE_INTERFACE.java                    |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_DELDEVICE_LIST.java                     |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_QUERULE_RULECONTENT.java                |   57 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_SET_RFID_MODE.java                           |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ENTER_TRAFFIC_INFO.java                                    |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_TYPE.java                                     |   94 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PTZ_WASH_INFO.java                                     |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NEST_DETECT.java                                       |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOBILE_ENFORCE_FORMAT.java                            |   58 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_START_HISTORYDATA.java                      |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_FONTSIZE.java                                |   57 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_RFIDCARD_INFO.java                               |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/LastError.java                                                       |  497 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_HELMET_DETECTION_INFO.java                       |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFICLIGHT_INFO.java                                 |   49 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/module/ConfigModule.java                                                 |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOBILE_ENFORCE_FILE_TYPE.java                         |   60 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/StringByteArr32.java                                       |   15 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_CAR_ATTRIBUTE_INFO.java                        |   63 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFICDOFINDSTAT.java                             |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_LANE_INFO.java                                |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CLEAR_PRIVACY_MASKING.java                         |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SCREEN_SHOW_CONTENTS.java                         |  112 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PARKING_TRIGGER_TYPE.java                             |   65 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUBLINK_TYPE.java                                     |   59 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_MOTION_RANGE.java                                  |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_FINANCIAL_CABINET_CONFIG_INFO.java                 |   68 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_STORAGE_IPC_FAILURE_INFO.java                        |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PRIVACY_MASKING_ENABLE.java                    |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_DRIVING_DIRECTION_INFO.java                    |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO.java                     |  280 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CONTROL_MODE.java                                     |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAMERA_CONNECT_STATE.java                             |   51 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REMAIN_ANALYSE_TOTAL_CAPACITY.java                     |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_SPEED_DROP_SHARPLY_INFO.java             |   88 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RAID_ERROR.java                                       |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_REGION_PARKING_TIMEOUT_INFO.java                     |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_IVS_MAN_NUM_DETECTION_INFO.java                        |  109 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_STAT_EX_INFO.java                       |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WEEK_PLANS_INFO.java                                   |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIRTUAL_COIL_OCCUPANCY_STATUS.java                    |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_POINTTYPE.java                                  |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_DELETE.java           |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_CONDITION.java              |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_SMOKE_DATA.java                                |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_ENABLE.java                         |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAR_TYPE.java                                         |  938 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_LOCATION_CALIBRATE_POINT_INFO.java                     |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_ACTION_CAPS.java                                   |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_CHANNEL_COUNT.java                               |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_DIAGNOSIS_COMPARE_RECORD_INFO.java               |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_BACKUP_TASK_INFO.java                        |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_REAL_DATA_TYPE.java                                   |   61 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FIND_RECORD_ACCESS_CTL_CONSUMPTION_INFO_CONDITION.java     |   48 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_VOICE_ID.java                                     |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_QUEUEDETECTION_RULE_INFO.java                          |   15 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_MOVE_ABSOLUTELY_CAP.java                           |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RINGS_LIST_INFO.java                                   |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CABINET_STATE_INFO.java                        |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMPARE_RESULT.java                                   |   60 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_COMPARE_GROUP_INFO.java                       |   57 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/VaccinateDateByteArr.java                                  |   15 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALGORITHM_TYPE.java                                   |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NAS_DIRECTORY_CFG_INFO.java                                |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PARKINGDETECTION_RULE_INFO.java                        |   45 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_PATTERN.java                               |   48 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PTZ_MOVING_DETECTIONRESULT.java                        |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_ALARMPOINTINFO.java                           |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_COURSE_RECORD_STATE.java                       |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOIN_DEFOG_INFO.java                                |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/NativeString.java                                                    |  124 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BURN_PARAM_INFO.java                                   |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEMPERATURE_STATISTICS_INFO.java                       |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_INTELLIPARKING_DATA_TYPE.java                     |   52 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THERMAL_IMAGE_CALIBRATION_MODE.java                   |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STARTMULTIFIND_FACERECONGNITION_EX.java             |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UNIFORM_STYLE.java                                    |   11 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_REGULATOR_DETECT_INFO.java                             |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NAS_GROUP_INFO.java                                    |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPEN_INTELLI_USER_DATA_INFO.java                       |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DIAL_STATE.java                                       |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_GROUP_FOUND_INFO.java                          |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SOLARCELL_PANEL_INFO.java                                  |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_STATES.java                                         |   14 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSE_CLOSE.java                            |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_VIDEO_STATISTICS.java                        |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLOTHES_COLOR.java                                    |  138 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TAMPERALTERSTATUS_TYPE.java                           |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_PARKINGSPACE_MANUALSNAP_INFO.java                |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_WIEGAND_INFO.java                                  |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEVICESERIALNO_INFO.java                       |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PARKINGSPACE_STATE_INFO.java                   |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CARD_MNG_INFO.java                                 |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_AUDIO_PROPERTY.java                                |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_LOWRATEWPAN_REMOVE.java                           |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEODIAGNOSIS_TASK_STATE.java                        |   45 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_GET_RFID_MODE.java                           |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SIP_SERVER_INFO.java                                   |  118 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_RUNNING_MODE.java                               |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEV_STORAGE_SMART_VALUE.java                    |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLASS_TYPE.java                                       |  387 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SIGNAL_ROAD_LIST_INFO.java                             |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AUDIO_DATA_CB_INFO.java                                |   52 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_REID_CLUSTER_STATE_INFO.java                     |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVSTATUS_POWER_INFO.java                              |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_GET_VFOV_VALUE.java                         |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_GET_CAPS.java                                |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_NAS_DIRECTORY_GET_INFO.java                        |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAOBJECT_ANIMAL_INFO.java                              |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IMAGE_COMPARE_INFO.java                                |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEOINPUTS_SERVICE_TYPE.java                         |   62 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TUMBLE_DETECTION_INFO.java                       |  125 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DO_FIND_VEHICLE_REG_DB.java                        |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_CARD_CAPS.java                                  |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CAMERASTATE.java                                    |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_MASK.java                   |   16 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_FILCKERING_DETECTION.java                        |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB.java           |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SDK_LOCAL_CFG_TYPE.java                           |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SNAP_BY_EVENT.java                                 |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SECURITYGATE_ATTACH_ALARM_STATISTICS.java          |   16 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_WLAN_ACCESSPOINT.java                              |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STU_LOG.java                                           |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RECORD_BACKUP_FAIL_REASON.java                        |   99 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPECIAL_DAYS_SCHEDULE.java                             |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LIFT_CALLER_TYPE.java                                 |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_CARD_READER_INFO.java                             |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DELETE_BY_SOURCEUID_ERRCODE.java                      |   69 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_DOWNBODY.java                                     |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OBJECT_PLACEMENT_DETECTION_INFO.java             |   90 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SCENE_MODE.java                                   |   81 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVEING_CALLING.java                                  |   47 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COLLISION_MODE.java                                   |   41 
 ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java                                           |  676 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_APN.java                                          |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_REGION_DETECT_INFO.java                  |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSERECORD_UPDATE_INFO.java                       |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_VIDEOSTAT_HEATMAP.java                          |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NORMALHAT_ATTRIBUTE.java                               |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_CHARGECLEAR.java                    |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MSGROUP_OPERATE_TYPE.java                             |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CHASSISINTRUSION_INFO.java                             |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_DEVICE_LOG_ITEM.java                                    |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEMPERATURE_STATUS.java                                |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_TRIGGER.java                |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EXAM_RECORDING_PLAN_INFO.java                          |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_TRANSMITTUNNEL_PARAM.java                       |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_SIZE.java                                          |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPECIAL_DAYS_SCHEDULE_CAPS.java                        |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_DEVICE_MODIFIED_INFO.java                        |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_RADAR_RFIDCARD_ACTION.java                        |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CALIBRATE_UNIT_INFO.java                               |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRE_EXTINGUISHER_OBJECT_INFO.java                     |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_COLORTYPE.java                               |   57 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_MOBILE_ENFORCE_PARAM.java                        |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MASK_DETECT_MODE.java                                 |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ISCSI_TARGET.java                                      |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO.java       |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_DISABLE_BEEP_LINKAGE_INFO.java                     |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VOTE_SETTINGS_INFO.java                                |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CHANNEL_CFG.java                               |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DOFIND_FACERECONGNITION_EX.java                     |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MaxSceneSupTypeByteArrInfo.java                            |   14 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ENCLOSURE_ALARM_TYPE_EX.java                          |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MONITORWALL_SET_COLL_SCHD.java                     |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CONFIG_OPENSSL_INFO.java                               |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CAMERA_CFG_INFO.java                                   |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_FIND_WORKSUIT_COMPARE_GROUP.java                    |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LANE_PLAN_LIST_INFO.java                               |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_HEATIMG_TEMPER_INFO.java                             |   75 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DRIVING_DIRECTION.java                                |   51 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MANUALSNAP_PARKINGSPACE_INFO.java                      |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_PARTITION.java                                 |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORDBACKUP_PROCESSTIME.java                          |    9 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PASSERBY_DB_DUPLICATE_REMOVE_CONFIG_INFO.java              |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_GETCAPS_AREASUB_TYPE.java                       |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECT_OBJECT.java                                    |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FACE_APPEND_STATE.java                                |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_LEVEL.java                                      |   69 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PTZ_NORMALIZED_POSITION_UNIT.java                          |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SET.java                                     |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_WIRELESS_AUTHENTICATION.java                      |   97 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INSTRUMENT_TYPE.java                                  |   98 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ARMMODE_INFO.java                                      |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_SUBLINK_LISTEN_SERVER.java                   |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_NOTIFY_TYPE.java                                     |   60 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_RUNNING_INFO.java                              |   84 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARM_USERAUTHORITY.java                              |   92 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LIGHT_COLOR_INFO.java                                      |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCADA_GET_ATTRIBUTE_INFO.java                      |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_TRAFFIC_ACCELERATION_RAPID_INFO.java         |  116 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_DOFIND_HISTORYDATA.java                      |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AREAS_INFO.java                                        |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PEOPLE_REGION_INFO.java                                |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSUIT_ABSTRACT_ERRCODE.java                        |   69 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_TRAFFIC_JAM_STATUS.java                              |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RELATING_VIDEO_INFO.java                               |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SECURITYGATE_PERSONALARM_INFO.java               |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_MOTION_STATUS.java                                  |   51 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PORTRAIT_DETECTION_CAPS.java                           |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_PROTOCOL_CAPS_INFO.java                            |  317 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MULTI_APPEND_TO_WORKSUIT_GROUP.java                |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_JUNTION_INFO.java                             |   68 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/AV_CFG_MONITOR_WALL_OUT_MODE_INFO.java                     |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BOAT_OBJECT.java                                       |   58 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_DELAY_DETECTIONRESUL.java                        |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_THERMOMETRY_SHIELD_INFO.java                       |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_VIOLATIONTYPE.java                        |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GET_ACCESSORY_INFO.java                                |   45 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_RECORD_STATE.java                               |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_CIGARETTE_CASE_DETECTION_INFO.java           |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CLOSURE_SETTING_INFO.java                              |   85 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMART_KITCHEN_CLOTHES_COLOUR.java                     |   57 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PARKINGRULE_INFO.java                           |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_HEALTH_TYPE.java                              |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DEVLOCATION_INFO.java                                  |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_WORKSTATDETECTION_INFO.java                      |   85 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_RELATED_IMAGE_INFO.java                           |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CANDIDATE_INFOEX2.java                                 |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EXTRA_PLATES.java                                      |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_ALARM_USER_PASSWORD.java                     |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_TRAFFIC_TURN_SHARP_INFO.java                 |  112 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CARDNOARRAY_INFO.java                                  |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_BREATHE.java                             |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_PLANS_INFO.java                           |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/REC_TYPE.java                                            |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_DEV_TIME.java                                          |   90 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DETACH_TRANSMIT_INFO.java                           |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTELLI_INFO.java                                      |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FREQUENCY_ALARM_TYPE.java                             |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_ELEVATOR_WORK_INFO.java                         |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PREALARM.java                                         |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TIME_EX1.java                                          |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_QUEUE_INFO.java                               |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NEW_QUERY_SYSTEM_INFO.java                            |  222 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DHDEV_SMART_HARDDISK.java                                  |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORDBACKUP_REMOTE_TASK.java                          |   62 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAR_COLOR_TYPE.java                                   |  166 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_WATERDATA_STAT_SERVER_GETCAPS_INFO.java            |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CAR_DRIVING_OUT_INFO.java                        |   90 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_HANDLER_VOICE.java                               |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_SCREEN_RULE.java                                 |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SEX_TYPE.java                                         |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_CALCULATEREALSIZE.java                        |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_RAINCOAT.java                                     |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_PER_AUTOMOVE_INFO.java                             |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ENTRY_DIRECTION.java                                  |   63 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_DRIVING_DIRECTION.java                        |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RADAR_DEVLIST_INFO.java                            |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOMER_DEV_SETTING_DOOR_METHOD.java                 |   89 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POWER_INFO.java                                        |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_SET_INFO.java                       |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_BREAK_RULE_BUILDIING_DETECTION_INFO.java         |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_ACCESS_CTL_IMAGE_INFO.java                             |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_GET_INFO.java                      |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_ATTACH.java                                  |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_AREA_SCAN.java                                     |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_VIDEOSTAT_HEATMAP.java                         |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OVER_FLOW_CONTROL_INFO.java                            |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_RADIOMETRY_RULE_EX.java                                |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_ENCLOSURE_INFO_EX.java                               |   94 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_CARDISTANCESHORT_INFO.java               |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PASSERBY_DB_CONFIG_INFO.java                           |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_BACKING_RULE_INFO.java                         |   77 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PIG_TEMPERATURE_INFO.java                              |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVSTATUS_NET_INFO.java                                |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SIM_STATE.java                                    |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STOP_FIND_DETAIL_CLUSTER_INFO.java                  |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_TARGET_MODE.java                               |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_SIZEFILTER_INFO.java                               |   95 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANTI_SUBMARINE_CAPS.java                               |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_SET_BYPASS.java                                   |   53 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFICTRUCKFORBID_INFO.java                     |   92 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COUNT_DETAIL_INFO.java                                 |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_BUILD_INFO.java                              |   15 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_PEDDETECTOR_LIST_INFO.java                |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_APPEND_IDENTI_INFO.java                       |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAP_TYPE.java                                         |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_CAPS_INFO.java                          |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/EVENT_INTELLI_COMM_INFO.java                     |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE_INFO.java      |   83 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELIVER_USER_PICTURE.java                          |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEST_RESULT.java                                       |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_INFO.java        |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFICDOFINDSTAT.java                              |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/Byte64Arr.java                                             |   13 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAR_DRIVING_DIRECTION.java                            |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_QRCODE_STATE.java                                     |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_FAILCODE.java                                     |   76 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/VA_OBJECT_ANIMAL.java                                      |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RAID_INFO_EX.java                                    |   51 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_OPTIMIZES_INFO.java                       |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_RADAR_RFIDCARD_INFO.java                     |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POSTION.java                                           |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_POPULATION_STATISTICS.java                      |   15 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_FORBIDDEN_ADVERT_PLAY_INFO.java                    |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_FORBIDDEN_ADVERT_PLAY.java                         |   45 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRFAFFIC_LIGHT_TYPE.java                              |   59 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_DIRECTION.java                             |   49 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_STREET_SUNCURE_INFO.java                         |  106 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_ACTION.java                 |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKACTION_STATE.java                                 |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_CURRENTSTATUSGET_STATUS.java                   |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_VS_TYPE.java                                      |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_CFG_OPERATE_TYPE.java                             |  426 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/VA_CAPS_INFO.java                                          |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_STARTUPGRADE.java                            |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DHDEVTIME.java                                             |   90 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DETAIL_DRIVEASSISTANT_INFO.java                        |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_CALCULATEREALSIZE.java                       |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_BASKET_TYPE.java                               |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_VEHICLE_INOUT_INFO.java                              |   65 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_SPECIAL_VEHICLE_INFO.java                |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CAR_DRIVING_IN_OUT_INFO.java                     |   79 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LOGIC_CHANNEL_INFO.java                                |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ARM_STATE.java                                        |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_MOTION_WINDOW.java                                     |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/ToolKits.java                                                        |  582 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_TRANSMITTUNNEL_PARAM.java                      |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRANSFER_SUBLINK_INFO.java                          |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_INFO.java                                       |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZ_STATUS_PROC.java                                |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POINT_INFO.java                                        |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FACEBODY_ANALYSE_INFO.java                       |   65 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PRIVACY_MASKING_CAPS.java                              |   46 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PARKINGSPACE_DIRECTION.java                           |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMART_KITCHEN_CLOTHES_STATE.java                      |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE.java              |   52 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC.java             |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FOCUS_LIMIT_SELECT_MODE.java                          |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_GET_CAPS.java                               |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMARTHOME_SCENE_MODE.java                             |   60 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SPLIT_SET_OSD_EX.java                               |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPACE_MODE_INFO.java                                   |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_DEVICE_WORK_STATE.java                   |   51 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_XRAY_MULTILEVEL_DETECT_INFO.java               |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_IVSEVENT_FIND_INFO.java                             |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_DECT_PARAM_INFO.java                     |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_CONDITION_TYPE.java                            |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HSJC_INFO.java                                         |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CHANNELS_STATE_TYPE.java                              |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GATHER_TYPE.java                                      |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FLOORS_INFO.java                                       |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRANSMIT_CMD.java                                   |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PlateNumber.java                                           |   13 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CAP_AUDIO_FORMAT.java                              |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE.java              |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CROWD_STAT_DATA.java                                   |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_INSIDE_ONJECT_TYPE.java                           |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ADD_ALARM_USER.java                                 |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_PRIVACY_MASKING.java                        |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VSP_GAVI_PLATFORM_CODE.java                           |   52 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/GetDevCaps_Type.java                                     |  196 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FILE_UPDATE_STATE.java                                |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IMAGE_INFO_EX2.java                                    |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE.java          |   53 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SIGNLIGHT_TYPE.java                                   |   57 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABINET_AUTOARM.java                         |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_EDUCATION_VOICE_TYPE.java                      |  194 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_EAP_METHOD.java                                   |   60 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FOLLOW_CAR_ALARM_INFO.java                       |   57 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CHANNEL_CFG.java                                |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MONITORWALL_GET_COLL_SCHD.java                     |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECT_OBJECT_TYPE.java                               |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NETDEV_NETINTERFACE_INFO.java                              |   97 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_COVERS.java                                    |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STARTUP_MODE.java                                     |   51 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ENCLOSURE_TYPE_EX.java                                |   68 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_VEHICLE_DISTANCE_NEAR_INFO.java                  |   57 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_COMP_INFO.java                           |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFICSTARTFINDSTAT.java                          |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_HIGH_TOSS_DETECT_INFO.java                             |   53 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INSULATOR_DETECT.java                                  |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/BYTE_32.java                                               |   13 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRANSMIT_PROXY_MODE.java                              |   60 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_WIEGAND_OUT_TYPE.java                             |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANIMAL_OBJECT_LIST_INFO.java                           |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILEOPEN.java                     |   45 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_REDIRECT_SERVER_CALLBACK_INFO.java                  |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPTIMIZES_INFO.java                                    |   90 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MaxNameByteArrInfo.java                                    |   16 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOTALK_SIGNLIGHT_INFO.java                          |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_WORKSUIT_BY_SOURCEUID.java                   |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_THINGS_PROPER_INFO.java                             |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WLAN_ACCESSPOINT_INFO.java                             |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_ALGORITHMTYPE_DETECTIONRESULT.java               |   52 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DEFENCE_AREA_TYPE.java                                |  102 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VIOLATIONTYPE_NORMAL.java                          |   15 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_PERSON_PASS_DIRECTION.java               |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_CLOSE_UP_TYPE.java                            |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GETSUMMARY_CROWDDISTRI_MAP_INFO.java                |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SCENE_TYPE.java                                       |  191 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_OFFLINE_CALL_TYPE.java                            |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INFRARED_FUNC_MODE.java                               |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_CITIZEN_PICTURE_COMPARE_INFO.java                    |  123 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STOP_FIND_WATERDATA_STAT_SERVER_INFO.java          |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_CAR_MEASUREMENT_INFO.java                |  139 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSITECHANNEL_INFO.java                             |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DOWNLOADFILE_OPTIONS_INFO.java                         |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_SOURCE_TYPE.java                               |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKCLOTHES_STATE.java                                |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_OVERLOAD_INFO.java              |   90 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RELATED_IMAGE.java                                         |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DEV_IO_STATS.java                                   |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_IMAGE_INFO.java                                   |   48 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFICSTROBESTATE_INFO.java                         |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_RETROGRADE_RULE_INFO.java                      |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_CAMERA_CFG.java                                |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_TARGET_TYPE.java                               |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_REMOTE_DISABLE_LINKAGE_TIME_SECTION_SYNC_INFO.java |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_COORDINATES.java                           |   49 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT.java                        |   45 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAPTURE_PROCESS_END_TYPE.java                         |   52 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLOTHES_TYPE.java                                     |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_BYPASSMODE.java                                |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESSORY_ALARM_TYPE.java                             |   82 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_3DFLOAT_SIZE.java                                      |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/fRedirectServerCallBackEx.java                              |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_LEAKCURTPOST.java                    |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/DEV_EVENT_PARKINGDETECTION_INFO.java             |  136 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_FILE_INFO_BY_PATH_INFO.java                     |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVSTATUS_SIM_INFO.java                                |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DATA_SOURCE_TYPE.java                                 |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SOLARCELL_SYSTEM_HISTORY_INFO.java                         |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_GETCAPS_RADAR_TYPE.java                         |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CROSS_LIST_INFO.java                                   |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FACEBODY_DETECT_INFO.java                        |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARMOUT_POLE.java                                    |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD.java                |   58 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSE_CLOSE.java                             |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CLEAR_PRIVACY_MASKING.java                          |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_START_HISTORYDATA.java                       |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AC_CAPS.java                                           |   88 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ABLOCK_DOOR_INFO.java                                  |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_CROSSREGION_ALARMTYPE.java                        |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PTZ_SPEED.java                                             |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_NONMOTORANGLE_TYPE.java                        |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VACAP_SUPPORTEDSCENES.java                             |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DVR_VIDEO_WIDGET.java                                  |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GRANULARITY_STARTFIND_TYPE.java                       |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_DENSITYDETECTION_INFO.java                       |   59 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RUNMODE_PARAMS.java                                    |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_DISPLAYTYPE.java                             |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/TALK_CODING_TYPE.java                                    |   69 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TALK_AUDIO_TYPE.java                                  |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CURRENT_OPERATE_MODE.java                             |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_VEHICLE_STOP_INFO.java                  |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_LOWRATEWPAN_ADD.java                              |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ADD_ALARM_USER.java                                |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_USER_DEF_TITLE.java                                |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_REGION_PARKING_NO_ENTRY_RECORD_INFO.java             |   45 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_TRIGGER_TYPE.java                              |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INSIDE_OBJECT.java                                     |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_RECORDBACKUP_FILE_PROGRESS_TYPE.java                |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_IN_REGION_STATUS.java                               |   51 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_DISTANCE_DETECTION_INFO.java                     |   87 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GETUSERINFOBYCONDITION_USER_TYPE.java                 |   68 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_THINGS_INFO.java                                    |   49 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ANALYSE_TASK_START_RULE.java                          |   62 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/USER_TIME_SECTION.java                                     |   13 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_PTZ_FUNC_TYPE.java                                   |   62 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TSECT_DAY.java                                         |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_VIDEO_COMPRESSION.java                               |   61 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DEV_STATUS.java                                       |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRE_DETECTION_POSITION_PARAM.java                     |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCENICSPOT_GETPOINTINFOS_INFO.java                 |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_SNAP_TYPE.java                                 |   62 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WRIST_MEASURE_MODE_PARAM.java                          |   60 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_WLAN_EAP.java                                          |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LIGHTINFO_CFG.java                                     |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_COURSE_RECORD_DEFAULT_CONFIG.java                  |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FIRE_EXTINGUISHER_CATEGORY_TYPE.java                  |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEST_ITEMS.java                                       |   59 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_DELDEVICE.java                       |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO.java              |   77 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_CAMERASTATE.java                                    |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_BACKUP_MODE.java                               |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GROUP_COLOR_TYPE.java                                 |   90 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR_INFO.java            |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NOTIFY_SCADA_DATA_INFO.java                            |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRIGGER_TYPE.java                                     |   58 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_LATTICE_SCREEN_ALARM_NOTICE_INFO.java          |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_LIGHT_DETECT_STATE.java                       |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_HOLD.java                                         |   13 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_DISABLE_LINKAGE.java                               |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_GATE_POPULATION_STATISTICS_INFO.java        |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_OBJECTTYPE.java                                 |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_HEATERATE.java                           |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_OVERYELLOWLINE_RULE_INFO.java                  |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_LOCALDATA_STORE.java                          |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_DIALRECOGNITION_INFO.java                        |   82 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_THERMO_GAIN.java                                       |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSE.java                                   |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_EXAM_RECORDING_PLANS.java                       |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEVICETYPE_INFO.java                           |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PRIVACY_MASKING_TYPE.java                             |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_ALARMMODE.java                                  |   48 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AGE_GROUP_TYPE.java                                   |    8 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRFAFFIC_LIGHT_SOURCE.java                            |   61 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_ANALYSE_REQ_EXTEND_INFO.java                       |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_DOFIND_HISTORYDATA.java                     |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_GLOBAL_PARAMETER.java                           |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_CHANNEL_INFO.java                             |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VSP_GAYS_ALARM_INFO.java                               |   13 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AREAARM_TRIGGERMODE.java                              |  101 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_WIRELESSDEV_POWERLESS_INFO.java                      |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORDFILE_INFOEX.java                                 |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/SNAP_TYPE.java                                           |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SPLIT_SET_HIGHLIGHT.java                           |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ENCODECAP.java                                         |   52 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BREED_DETECT_CATEGORY_TYPE.java                       |   62 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE.java              |  107 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_FLOWSTAT_DIRECTION.java                              |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_COURSE_RECORD_MODE.java                         |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_FACERECOGNITION_RESULT.java  |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BROADCAST_INFO.java                                    |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ABNORMAL_OBJECT_TYPE.java                             |   52 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_OVER_FLOW_STATE.java                              |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_IVSEVENT_FIND_INFO.java                            |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/BYTE_64.java                                               |   14 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_SCADA_DATA_INFO.java                         |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEDIAFILE_GENERAL_INFO.java                            |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_SOLARCELL_SYSTEM_INFO.java                           |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_CONTINUOUSLY_TYPE.java                             |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FOG_DETECTION_RULE_INFO.java                           |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PRIVACY_MASKING.java                           |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RELAY_TYPE.java                                       |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFIC_SNAP_RADAR_INFO.java                        |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VOLTAGE_STATE_TYPE.java                               |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SUBLINK_SERVER_CALLBACK.java                           |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACE_FEATURE_VECTOR_INFO.java                          |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO.java         |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_ALARM_LEVEL.java                         |   57 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CLASSIFY_RESULT_STATISTICS_INFO.java                   |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BOAT_DIRECTION.java                                   |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRING_GPS_INFO.java                                   |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RECORD_TYPE.java                                      |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/BODY_TRAIT.java                                            |   92 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_ELEVATOR_WORK_INFO.java                        |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_LOCK_CONTROL.java                  |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NETDEV_VIRTUALCAMERA_STATE_INFO.java                       |   59 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DETECT_REGIONS_INFO.java                               |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILECLOSE.java                    |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AIRBORNE_TYPE.java                                    |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DO_FIND_DETAIL_CLUSTER.java                         |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HELMET_EVENT_TYPE.java                                |   63 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RAIN_SHED_TYPE.java                                   |   79 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STANDARD_VEHICLE_TYPE.java                            |  150 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_COURSE_LOGIC_CHANNEL.java                      |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OPERATE_USERINFO_TYPE.java                            |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_VIDEOIN_DAYNIGHT_CAPS.java                          |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NEEDED_PIC_RETURN_TYPE.java                           |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_SIZE_WIDE.java                                     |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LED_BRIGHTNESS_LEVEL.java                             |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NETWORK_BR_INTERFACE.java                              |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_ALL_AUTOMOVE_INFO.java                             |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_NIGHTASK_INFO.java                        |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_INSTALL_INFO.java                        |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/NET_OUT_WM_GET_COLLECTIONS_V1.java               |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_AFBSTATUS.java                           |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PRE_UPLOAD_REMOTE_FILE.java                         |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEMPERATUREEX_VALUE.java                               |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSE_PLAN_INFO.java                                 |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_MOTION_INFO.java                                       |  125 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_FLOWSTAT_RULE_INFO.java                        |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_SETTINGS_INFO.java                               |   51 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GLASS_STATE_TYPE.java                                 |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_WORKMODE.java                                     |   84 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_PRESERVATION_INFO.java                           |  100 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_AREAARM_MODECHANGE_INFO.java                         |   48 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PTZ_WASH_POSISTION_INFO.java                   |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_TRANSMIT_INFO.java                           |   46 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_NUMALARM.java                            |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COLOR_MASKING_CAPS.java                                |   46 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_FAST_CHECK_TYPE.java                          |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_SDK_INFO.java                                |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IMAGE_INFO.java                                        |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_QUEUE_INFO.java                         |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TITLE_TEXT_ALIGNTYPE.java                             |   85 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_RADIOMETRY_RESULT.java                               |   83 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DAY_ACTIONS_INFO.java                                  |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACCESS_CONTROL_ASG.java                                |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_PEDDESTRAIN_PRIORITY_INFO.java            |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HEATMAP_TYPE.java                                     |   63 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SHAPE_TYPE.java                                   |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSE_CHANNEL_INFO.java                              |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_XRAY_ATTACH_PACKAGE_STATISTICS.java                 |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARM_ONECLICKARMING_FUNCTION.java                    |   60 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_GENEAL_ATTITUDE_INFO.java                        |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_HEALTH_CODE_INFO.java                              |   94 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_LOCATE_INTO.java                           |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOUTH_STATE_TYPE.java                                 |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SECURITYGATE_ATTACH_ALARM_STATISTICS.java           |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAMERA_OCCLUSION.java                                  |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_GET_INFO.java                       |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNEL_CFG_INFO.java                                  |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIND_VEHICLE_CONDITION.java                            |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACERECOGNITION_PERSON_INFOEX2.java                    |   60 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_EXPRESSION_TYPE.java                     |   65 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FIRE_INFO.java                                   |  139 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_PTZZOOM_INFO.java                                  |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_TRAFFIC_LAMP_CONFIG_INFO.java                      |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSE_LOCK_TYPE.java                                 |   69 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLOTHES_LEGAL_STATE.java                              |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BACKUP_TARGET.java                                     |   15 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_IRIS_CAPS.java                                  |   48 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_CROWDDISTRI_MAP_INFO.java                   |   20 
 ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java                                  | 3412 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSE_OPEN.java                              |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OVER_LAPS_INFO.java                                    |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CUSTOMER_DEV_SETTING_INFO.java                     |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCENICSPOT_TURNTOPOINT_INFO.java                    |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MSG_OBJ_PERSON_DIRECTION.java                         |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NUMBERSTAT_INFO.java                                   |  133 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PRIVACY_MASKING_VERSION.java                          |   61 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_BSCCUSTOM.java                                     |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COVER_PLATE_STATE.java                                |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MONITORWALL_SET_ENABLE.java                         |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AREA_MODE_INFO.java                                    |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_PRIVACY_MASKING.java                         |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ENCODE_CFG_CAPS.java                               |   75 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IMAGE_TYPE.java                                       |   51 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSUIT_GROUP_TYPE.java                              |   53 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_LOCATE_INFO.java                            |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_VEHICLE_FROM_VEHICLE_REG_DB.java            |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DAY_PLANS_INFO.java                                    |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMOKE_DETECTION_RULE_INFO.java                         |   45 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/ENTER_INFO_V1.java                               |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STU_OLD_LOG.java                                       |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFIC_SNAP_STROBE_INFO.java                       |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_ARMING_FAILURE_INFO.java                         |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/DEV_EVENT_CROSSREGION_INFO.java                  |  209 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PROPERTIES_VALUE_TYPE.java                            |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_XRAY_PACKAGE_MODE.java                                |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_RADAR_COIL_MATCH_STATE.java              |   51 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_RUNNING_MODE.java                              |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSERECORD_GETINFO.java                           |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCENICSPOT_SETPOINTINFO_INFO.java                   |   84 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_RS485_DETECT.java                          |   49 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_GENEAL_ATTITUDE_CAPS.java                              |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_NONMOTOR_ENTRYING_INFO.java                      |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DISKCTRL_PARAM.java                                        |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORTFINGERPRINT.java                               |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_IN_FOCUS_UNIT.java                               |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FACERECOGNITION_PERSON_INFOEX.java                         |  108 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_ACCESSCTL_SPECIALDAY_GROUP_INFO.java               |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_VEST.java                                         |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SHOESCOVER_ATTRIBUTE.java                              |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GETUSERINFOBYCONDITION_USER_STATUS.java               |   60 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PUSH_PICTURE_BYRULE_INFO.java                          |   59 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_FACEDETECT_RESULT.java       |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFICCAR_CAR_TYPE.java                              |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_LOCK_CONTROL.java                   |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_FINGERPRINT_CAPS.java                           |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFIC_SNAP_RADAR_INFO.java                       |   76 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_PRIORITY_CONFIG_INFO.java                        |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEO_ABNORMAL_DETECT_TYPE.java                       |  134 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_GET_NETSTATE.java                            |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CHANNEL_STATE.java                             |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZBASE_GET_HFOV_VALUE.java                        |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FILE_TYPE.java                                        |   49 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFICACCIDENT_INFO.java                        |   75 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PARKINGSPACE_STATE.java                               |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_MOVEABSOLUTELY_INFO.java                    |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_KEYPAD_LOCK_INFO.java                                |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITORWALL_COLLECTION_NAME.java                       |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DETECT_REGION.java                                     |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_MONITORWALL_OPERATE_TYPE.java                        |  115 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_ENABLE.java                          |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFICCAR_ORIGINAL_VEHICLE.java                       |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RAID_MEMBER_INFO.java                                  |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_VIDEOSTAT_STREAM.java                               |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CYCLE_PLAN_INFO.java                                   |   69 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DISPLAY_CAMERA_ANGLE_TYPE.java                        |   53 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ALARM_SUBSYSTEM_INFO.java                              |   62 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_BACKUP_TASK_INFO.java                         |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/constant/SDK_ALARM_Ex_TYPE.java                                      |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_RECORDBACKUP_FILE_TYPE.java                         |   57 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/POSTION.java                                               |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SCREEN_TEXT_COLOR.java                                |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CHANNEL_STATE.java                              |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAVEL_CODE_COLOR.java                                |   57 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DIAL_DETECT.java                                       |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STATUS.java                                           |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AIRBORNE_DETECT.java                                   |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_EVENT.java                                    |   58 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SOLARCELL_BATTERY_INFO.java                                |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HEALTH_CODE_INFO.java                                  |   53 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SIGNAL_VEHICLE_DETECTOR_INFO.java                      |   90 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ENCODE_VIDEO_INFO.java                                 |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_REMOTE_SLEEP.java                                   |   16 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_WIRELESS_INFO.java                                     |   89 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ANATOMYTEMP_VISUAL_CAPS.java                           |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_CAMERA_CFG.java                                 |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_WIRELESS_DEVICE_TYPE.java                            |   80 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RTSC_TRAFFIC_INFO.java                               |   89 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_CURRENTSTATUSGET.java                |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZ_CURRENT_FOV_VALUE.java                          |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_NAS_DIRECTORY.java                                 |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/EmptyStructure.java                                        |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_ELEM_NAMETYPE.java                           |   63 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CAP_SPEAK.java                                     |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_GET_ALARMREGION_INFO.java                         |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_RTSP_INFO_OUT.java                                     |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NOTIFY_GYRO_DATA_INFO.java                             |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_PLATE_TYPE.java                                   |  161 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PTZ_UNSUPPORT_DIRECTION.java                          |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_HUDDLE_MATERIAL_INFO.java                        |  106 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_PARKING.java                              |   11 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMMON_CONFIG_INFO.java                                |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSE_INFO.java                                       |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CAMERASTATE.java                                   |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_TEMP_SCH_INFO.java                            |   57 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_LEDCONFIG.java                            |   10 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMPLIANTDETAIL_TYPE.java                             |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_FLOW_ATTRIBUTE.java                               |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CODEID_SENSE_METHOD_TYPE.java                         |   88 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_NOTIFY_ALARMPOINTINFO.java                       |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CB_STATES.java                                        |   47 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACCESS_GENERAL_INFO.java                               |  106 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ATTRIBUTE_INFO.java                                    |  115 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_TEMP_USERID_INFO.java              |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_UPLOAD_CLIENT_INFO.java                                |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/LAMP_STATE_V1.java                               |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_GLOBAL_PARAMETER.java                          |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AUDIO_DATA_TYPE.java                                  |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DHDEV_DEVICE_INFO.java                                     |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SCREEN_TEXT_TYPE.java                                 |   65 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCENICSPOT_GETPOINTINFOS_INFO.java                  |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CAMERA_INFO.java                               |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_ATTACH.java                                 |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_PARKINGRECORD_INFO.java                     |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_ANALYSE_INFO_OPT.java                              |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SPLIT_GET_OSD_EX.java                              |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_RELAY_INFO.java                                   |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_COLLISION_CONFLICT_INFO.java                 |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVE_SMOKING.java                                     |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_GYRO.java                                    |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACCESS_VOICE_INFO.java                                 |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INSIDE_SUB_TOTAL_INFO.java                             |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAR_LANE_LIST_INFO.java                                |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEVICE_ETH_BAND_INFO.java                      |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_NAS_DIRECTORY_PROTOCAL.java                       |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INSIDE_OBJECT_TYPE.java                               |  222 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HUMAN_FEATURE_VECTOR_INFO.java                         |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COUNTDOWN_TYPE.java                                   |   53 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_INTELLI_SHELF_INFO.java                          |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_XRAY_UNPACKING_CHECK_INFO.java                   |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_STEREO_BEHAVIOR_SCENE_CAPS.java                        |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROJECT_TASK.java                                      |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_FLOWSTAT_INFO_DIR.java                         |   48 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSE_STATE.java                                     |   60 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB.java              |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_ERROR_CODE.java                                |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PIC_TYPE.java                                         |   62 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSERECORD_UPDATE_INFO.java                      |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WIEGAND_INFO.java                                      |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_TRAFFIC_OCCUPYING_THEPATH_INFO.java              |  102 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_SNOWFLAKE_DETECTION.java                         |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IVSEVENT_EVENT_INFO.java                               |   45 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_SENSE_METHOD.java                                    |  274 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRUCKNOTCLEAN_FOR_PRMA_INFO.java                 |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_MINIINDOOR_RADAR_ALARM_INFO.java                 |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_USER_PASS_TYPE.java                                   |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_OBJECT_FILTER_INFO.java                            |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTELLIPARKING_OPENAREA_INFO.java                      |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SET.java                                    |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_BACKUP_TASK_SESSION.java                     |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_EXITMAN_STAY_STAT.java                                 |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_DYNAMIC_PWDLOCK_CLOSE_INFO.java                  |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_GARBAGE_PLASTICBAG_INFO.java                 |   96 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HISTORY_TRAFFIC_CAR_INFO.java                          |  159 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_UPLOAD_UPPACKING_CHECK_INFO.java                   |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEMP_MEASURE_TYPE.java                                |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_FIND_WORKSUIT_COMPARE_GROUP.java                   |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCENICSPOT_SETPOINTINFO_INFO.java                  |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NETAPP_COMMUNICATION_LIST.java                         |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_AC_CAPS.java                                        |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DIAGNOSIS_DRAMATIC_DETECTIONRESULT.java                |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CUSTOMINFO_CAPS.java                           |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETAIL_INFO.java                                       |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/START_LISTEN_FINISH_RESULT_INFO.java                       |   13 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_FIND_REC_BAK_RST_TASK.java                          |   48 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_3DFLOAT_POINT.java                                     |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAMERA_STATUS.java                                    |   59 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_UMBRELLA.java                                     |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GLOBAL_LANES_LINE_TYPE.java                           |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PIG_STAY_STAT.java                                     |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_CHANNEL_CAP.java                                 |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_SCADA_DATA_INFO.java                        |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_UPDATE_INFO.java                                       |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_WLAN_ACCESSPOINT.java                               |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPEN_INTELLI_OBJECT_INFO.java                          |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_DETECT_OBJECT.java                               |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_INFO.java                                          |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EYE_STATE_TYPE.java                                   |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STARTMULTIFIND_FACERECONGNITION_EX.java            |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTY_PLAN_LIST_INFO.java                           |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DELIVERY_FILE_TYPE.java                               |   48 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CALLLIFT_CMD.java                                     |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_ALARMMODE.java                                  |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/HUMAN_ATTRIBUTES_INFO_EX.java                              |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DOOR_DETECT.java                                       |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_COURSE.java                                  |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSERECORD_GET_TIME.java                          |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_FILCKERING_DETECTION_RESULT.java                 |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IS_RECORD.java                                        |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LAMP_GROUP_INFO.java                                       |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACEDETECT_IMAGE_INFO.java                             |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UPLOAD_FLAG.java                                      |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/DH_LOG_QUERY_TYPE.java                                   |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_CURRENTSTATUSGET_STATUS.java            |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_TYPE_SPLIT.java                               |   52 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CROSSREGION_INFO.java                                  |  173 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_SCADA_DATA_INFO.java                                   |   51 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER_ONECLICKARMING.java                         |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BAR_CODE_IMAGE.java                                    |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMM_PROP.java                                         |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PTZ_SPACE_UNIT.java                                        |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEDIO_WIDGET_COVER.java                                |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_PRIVACY_MASKING_ENABLE.java                    |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HEALTH_CODE_STATUS.java                               |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_FAST_IMPORT_TYPE.java                         |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RFID_CARD_INFO.java                                    |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEODIAGNOSIS_PROJECT_INFO.java                       |   16 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CAPTURE_SIZE.java                                        |  258 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_INTELLI_SHELF_INFO.java                                |   69 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NAS_STATE_TYPE.java                                   |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/Net_PIC_INFO.java                                          |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/POINTINFOS.java                                            |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESSCTL_SPECIALDAY_INFO.java                         |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FIRE_EXTINGUISHER_DETECTION_INFO.java            |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_FACE_CAPS.java                                  |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ADD_COURSE.java                                    |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ASG_WORK_MODE.java                                    |   48 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_STAFF_TYPE.java                                   |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_ACCESS_PROPERTY_TYPE.java                            |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SCREEN_SHOW_INFO.java                                  |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEMPERATURE_INFO.java                                  |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_BACKUP_PROGRESS.java                            |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOABNORMALDETECTION_RULE_INFO.java                  |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_REASON_TYPE.java                                      |   79 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_INFO.java                    |  148 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VAULT_DOORSTATE.java                                  |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABIN_INFO.java                              |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEDIAFILE_EXAM_PARAM.java                              |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_CLOTHES.java                |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEOSATA_SUMMARY_INFO.java                            |  171 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LEAVEDETECTION_TRIGGER_MODE.java                      |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLATE_COLOR_TYPE.java                                 |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO.java               |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/STEP_SEQUENCE_INFO.java                                    |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_DRIVER_ABNORMAL_INFO.java                |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_JUNTION_INFO.java                       |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_RIDING_MOTOR_CYCLE_INFO.java                     |   84 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NAS_INFO.java                                          |   65 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_XRAY_MULTILEVEL_DETECT_INFO.java                |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DREGS_UNCOVERED_VEHICLE_INFO.java                          |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PIG_STAY_STAT.java                                     |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_PRIORITY_INFO.java                               |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL.java                               |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_UPDATE_INFO.java                   |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TROUSERS_TYPE.java                                    |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_PRIVACY_MASKING.java                           |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ACCESSCONTROL_CAPTURE_CMD.java                     |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_OFFLINELOGCLEAN.java                |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_CONSUMPTION_MODE.java                             |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BATTERY_TEMPER_STATE.java                             |   61 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DISTRACT_DRIVING.java                                  |   47 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_QUERULE.java                         |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_SVN_INFO.java                                |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STRABISMUS_TYPE.java                                  |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_NO_DISK_INFO.java                                    |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_REG_DB_OPERATOR_ERRCODE.java                  |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUBLINK_STATE.java                                    |   68 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_HARDDISK_STATE.java                                    |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RECORD_BACKUP_FIND_TYPE.java                          |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_COLOR_TYPE.java                                |  134 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSE.java                                            |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DO_FIND_VEHICLE_REG_DB.java                         |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_SET_RFID_MODE.java                            |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETECT_BIG_PIC_INFO.java                               |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_NETAPP_GET_MOBILE_INTERFACE.java                   |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_POWER_TYPE.java                                   |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MONITORWALL_SET_ENABLE.java                        |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PtotoListByteArr.java                                      |   15 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_DELETE.java            |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_REAL_PREVIEW_CHANNEL.java                       |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_SHOW_TYPE.java                     |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_EXTERNAL_WIFI_INFO.java                           |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER.java                                        |   97 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FUEL_DISPENSER_INFO.java                               |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PROCESS_MODE.java                                     |   68 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SOURCE_VIDEO_LOCATION.java                            |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_VIDEO_NORMAL_DETECTION_INFO.java                 |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DOWNLOAD_PIECE_FILE.java                           |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_ALARM_FACEIMAGE_INFO.java                 |   15 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BLACK_WHITE_DETECTIONRESULT.java                       |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_ANIMAL_DETECTION_INFO.java                       |   85 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_IMAGE_QUALITY.java                                |   59 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_STATE.java                                         |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MOSAIC_MASKING_CAPS.java                               |   46 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEVICE_ETH_BAND_INFO.java                       |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LANE_STATE.java                                            |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AREAARM_USER.java                                     |   85 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_ETH_STATE.java                                    |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECT_SENSOR_TYPE.java                               |   76 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RPC_NETAPP_TYPE.java                                  |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CONSUMPTION_EVENT_INFO.java                      |  169 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ENCODE_AUDIO_INFO.java                                 |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_DAY3GFLUXTACTIC.java                              |   52 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_VEHICLE_DETECTORLIST_INFO.java            |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_CELIBRATE_AREA.java                                |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_XRAY_DETECTION_INFO.java                         |  135 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CITIZENIDCARD_SEX_TYPE.java                           |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_QUERULE_RULES.java                      |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ARM_TYPE.java                                         |   81 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NET_TIME_EX.java                                       |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_BARELAND_DETECTION_INFO.java                     |   75 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIREPROOF_CLOTHES.java                                 |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SMOKE_REMOTE_REBOOT_INFO.java                      |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GOTO_PRIVACY_MASKING.java                           |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_CUSTOM_SNAP_INFO.java                        |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_TRAFFIC_OVERSPEED_INFO.java                            |  125 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_GET.java                                    |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALGORITHM_PARTITION_TYPE.java                         |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_RULECONTENT_TRIGGER_PROPERTY.java               |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMMON_DATE_PLAN_INFO.java                             |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_XRAY_MULTILEVEL_DETECT_INFO.java                |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_TRAFFICFLOWSTAT.java                                    |  106 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_BUTTON_INFO.java                        |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_ADDDEVICE.java                      |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SENIOR_INFO.java                                       |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MANUAL_TEST.java                                   |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_LINK_CLASS_TYPE.java                                   |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_ALARM_STATISTICS_INFO.java                |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_INFO_EXTEND.java                                 |   49 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_DEVICE_STATUS.java                            |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REGION_INFO.java                                       |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_GETCAPS.java                                 |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_HEARTBEAT_INFO.java                               |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_VIDEOSTAT_STREAM.java                        |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_TEMPERATUREEX.java                              |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_AC_CAPS.java                                       |   52 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SCENEDETECTION_TYPE.java                          |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/VA_DYNAMIC_CAPS_INFO.java                                  |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POPULATION_STATISTICS_INFO.java                        |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPECIAL_DATE_PLAN_INFO.java                            |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVER_NOBELT.java                                     |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_RUNNING_MODE.java                              |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STEREO_ACTION_TYPE.java                               |   53 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEO_FILE_STATE.java                                 |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_TRIGGER_TIMER_CORN.java                         |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_TANK.java                                      |   16 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LINE_COLOR_TYPE.java                                  |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BROADCAST_TEXT_TYPE.java                              |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GREENCNHEALTH_STATUS.java                             |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_RULE_TYPE.java                                    |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FACE_TRAIT.java                                            |   46 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_IDENTITY_ANOMALY.java                                  |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_ELECTRICFAULTDETECT_INFO.java                    |  188 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AREA_MODE_INFO.java                                    |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ANALYSE_TASK_ERROR.java                               |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_CONTROL_TYPE.java                  |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAT_STYLE.java                                        |   12 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NETWORK_BOND_INTERFACE.java                            |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COAT_TYPE.java                                        |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_OVERFLOW_CONTROL_INFO.java                |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_SOURCE_MODE.java                               |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_POLLING_CONFIG.java                             |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_TEMPERATUREEX.java                             |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_HAT.java                    |   16 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SMOKE_REMOTE_REBOOT_INFO.java                       |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VARLANE_PLAN_LIST_INFO.java                            |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OBJECT_INFO.java                                       |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRANSMIT_DISCONNECT_CALLBACK.java                      |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECT.java                                              |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_ENCODER_CFG.java                                       |   51 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_ACCIDENT_RULE_INFO.java                        |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PRIVACY_MASKING_ENABLE.java                     |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_3DFLOAT_POSTURE.java                                   |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FISHING_DETECTION_INFO.java                      |   91 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_ROAD_CONSTRUCTION_RULE_INFO.java               |   48 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PARK_CONTROL_INFO.java                         |   14 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_AC_GZYD_INFO.java                                  |   53 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LANE_RUNING_STATE.java                                |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACE_ORIGINAL_SIZE.java                                |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CPU_STATUS.java                                        |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_DEVLIST_INFO.java                               |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ACCESSCONTROL_CAPTURE_CMD.java                      |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNELS_STATE.java                                    |   51 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPEN_INTELLI_OBJECT_ATTRIBUTE_INFO.java                |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUBLINK_MODE.java                                     |   53 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_ACCESS_ERRORCODE.java                                |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TALK_SEND_DATA_STREAM.java                          |   53 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO.java         |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RTSC_PHASE_RUNNING_INFO.java                         |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_PARKINGRECORD_INFO.java                      |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_H264_PROFILE_RANK.java                                |   69 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_START_HISTORYDATA_TOPICS.java                   |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AUDIO_SPIRIT_LINKAGE.java                              |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MANUAL_TEST.java                                    |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HUMAN_POSTURE_TYPE.java                               |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EPIDEMIC_AREA_EXPERIENCE.java                          |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_RAINBRUSH_TOUR_INFO.java                               |   15 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ABLOCK_INFO.java                                       |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CARD_PROVINCE.java                                    |  154 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BAG_TYPE.java                                         |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_CODEID_ERROR_TYPE.java                               |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_COURSE_RECORD_MODE.java                        |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MATCH_TWO_FACE_OUT.java                                |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMPOSIT_CHANNEL_BIND_MODE.java                       |   68 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FIRE_LANE_OILCAP_STATE.java                           |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FILE_PROCESS_INFO.java                                 |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IDCARD_INFO.java                                       |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESSORY_INPUT_TYPE.java                             |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/constant/SDKStructureFieldLenth.java                                 |   87 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LEFTDETECTION_RULE_INFO.java                           |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_GET_DEVLIST.java                            |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_PIXELPOINT.java                                  |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VACCINE_INFO.java                                      |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CREATE_GROUP_FOR_VEHICLE_REG_DB.java               |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BATTERY_EXIST_STATE.java                              |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLAYAUDIO_PRIORITY.java                               |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IMAGE_INFO_EX.java                                     |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_HAT.java                                          |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GLASSES_RULE_TYPE.java                                |   86 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OBJECT_IMAGE_INFO.java                                 |   47 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_SNOWFLAKE_DETECTIONRESULT.java                   |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_WORKSUIT_BY_SOURCEUID.java                  |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RTSC_RUNNING_INFO.java                               |  103 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACROSS_PARKING.java                                   |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CTRL_SCHEME.java                                      |   58 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SNAP_BY_EVENT.java                                  |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLATE_TYPE.java                                       |   82 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_IMAGE_INFO.java                         |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSTATDETECTION_TYPE.java                           |   83 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_FIRE_DETECTION_INFO.java                             |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LAMP_STATE.java                                            |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CROWD_CALIBRATION.java                                     |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_XRAY_ATTACH_PACKAGE_STATISTICS.java                |   16 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_PEDESTRAIN_RULE_INFO.java                      |   63 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WEB_TUNNEL_PROTOCOL.java                              |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ZONE_ABNORMAL_INFO.java                                |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STARTSERACH_DEVICE.java                            |   16 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EVENT_OPERATE_TYPE.java                              |   57 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CPU_INFO.java                                          |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSE_RECORD_TYPE.java                               |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PARKINGRECORD_INFO.java                                |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANATOMY_TEMP_DETECT_FILTER.java                        |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SENSOR_STATE.java                                      |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_VEHICLE_FROM_VEHICLE_REG_DB.java             |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_RESIDENTALARM.java                       |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WATERDATA_STAT_SERVER_SUPPORT.java                    |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ONLINE_STATUS.java                                    |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_RADAR_DETECT_CAR_STATE.java              |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/Utils.java                                                           |  210 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PassingCityByteArr.java                                    |   16 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CAP_ACCESSCONTROL.java                             |   53 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRE_DETECTION_RULE_INFO.java                          |   49 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZBASE_GET_CENTER_GPS.java                        |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRE_EXTINGUISHER_CATEGORY_INFO.java                   |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_GETSTATUS.java                                |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_LEAKCURTPOST.java                   |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STREAM_CFG_CAPS.java                                   |  117 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CREAT_SUB_BUSINESS_MDL_INFO.java                   |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COVER_PLATE_DETECT.java                                |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STAT_ATTRMAP.java                                      |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RESPIRATOR_STATE.java                                 |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_TANK_CAPACITY_DETECTION.java         |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_GLOBAL_PARAMETER.java                          |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CTRL_INFO.java                                             |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_BACKUP_TASK_SESSION.java                      |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_IVS_TYPE.java                                   |  832 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_UNIFIEDINFOCOLLECT_GET_DEVSTATUS.java              |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX_OUT.java                          |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PointerSize.java                                           |   15 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VOICE_PLAY_PLAN.java                                   |   16 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESSORY_VOLUME.java                                 |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_WIEGAND_MODE.java                                 |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DOOR_STATE.java                                       |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_REGIONDETECTION_RFIDCARD_INFO.java               |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/MEDIAFILE_FACERECOGNITION_INFO.java              |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ENCODE_AUDIO_COMPRESSION_INFO.java                     |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_DETECT_TYPE.java                                |   68 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NUMBER_STAT_TYPE.java                                 |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO.java         |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_WORKSUIT_COMPARE_GROUP.java                  |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/POINTCOORDINATE.java                                       |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MATCH_TWO_FACE_IN.java                                 |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_VIDEOSTAT_HEATMAP.java                       |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RUN_LAMP_INFO.java                                         |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_WORKSUIT_FEATURE_ABSTRACT_INFO.java                  |   46 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_CHANNEL_CFG.java                               |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_CONSUME_RESULT.java                            |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SCENE_SUPPORT_RULE.java                                    |  191 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNELS_STATE_CONDITION.java                          |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_GETSTATUS.java                               |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_NAS_DIRECTORY_CACHE_TYPE.java                     |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FOLLOW_CAR_ALARM_IMAGE_TYPE.java                      |   51 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SAVE_COLLECTION_TYPE.java                             |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DISK_STATE.java                                       |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALLOW_PERMIT_FLAG.java                                |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECTOR_STATUS_TYPE.java                             |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_ALERT_INFO.java                     |   81 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_FILE_HOLD_DAYS_INFO.java                           |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_RULE_INFO.java                                   |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CALIBRATEBOX_INFO.java                             |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GETSUMMARY_CROWD_STAT_DATA.java                        |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_PRIVACY_MASKING.java                            |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_FIND_GROUP_FROM_VEHICLE_REG_DB.java                 |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFIC_RADAR_GET_OBJECT_INFO.java                  |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CALIBRATE_UNIT_INFO_ARR.java                           |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GETSUMMARY_REGION_PEOPLE_LIST_INFO.java                |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NIGHT_ASK_INFO.java                                    |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_UINT_POINT.java                                        |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_LOGO_TYPE.java                     |    8 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_MANUAL_TRACK.java                             |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_ALARMPOINT_INFO.java                             |   69 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLAY_WITH_MODE.java                                   |   59 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_TRIGGER_TIMER_CORN_TYPE.java                   |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RADAR_RFIDCARD_INFO.java                           |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_TALK_INFO.java                               |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_RADIOMETRY_ALARMCONTION.java                         |   60 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE_INFO.java           |   61 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PASSED_SUBTOTAL_INFO.java                              |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_VIDEO_ENCODE_CAPS.java                              |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_PIXELLINE.java                                   |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LOGIC_CHANNEL.java                                |  109 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_CARSPEED_INFO.java                               |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MULTI_LEVEL_INFO.java                                  |   53 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_GROUP_FOR_VEHICLE_REG_DB.java               |   16 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WEARING_STATE.java                                    |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ZONE_STATUS.java                                      |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_VS_DATA_TYPE.java                                 |   48 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANTIGEN_INFO.java                                      |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_ADDDEVICE.java                       |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSE_PLAN_DETAIL_INFO.java                          |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_GROUP_FOR_VEHICLE_REG_DB.java                |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMOKING_DETECT.java                                    |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABINET_MESSAGE.java                         |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NEW_CONFIG.java                                       |  406 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CROSSLINE_INFO.java                                    |  141 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SNAP_POLICY_TYPE.java                                 |   58 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RESOLUTION_INFO_ARRAY.java                             |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DOWNLOAD_MULTI_FILE.java                           |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_CAPACITY_CAP.java                                |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ATTACH_TOPICS.java                                    |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WATER_QUALITY.java                                    |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PEDESTRAIN_PRIORITY_INFO.java                          |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java                                    |  570 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SEND_SEARCH_TYPE.java                                 |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_SMOKE_DATA.java                                 |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSITECHANNELMODE_INFO.java                         |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FACE_TRAIT_ALIVE_TYPE.java                            |    7 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PERSON_INFO_INPUT_RESULT.java                       |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_VIDEOSTAT_STREAM.java                       |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_VIDEO_ENCODE_CAPS.java                             |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_MOBILE_ENFORCE_INFO.java                         |   98 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_TRANSMIT_INFO.java                          |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_SETCALIBRATION.java                           |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_ASG_VOICE_DIRECTION.java                          |   45 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_RTSP_INFO_IN.java                                      |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_XRAY_IMAGE_TYPE.java                                  |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CIGARETTE_CASE_INFO.java                               |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAGEOBJECT_IMAGE.java                                  |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GETSUMMARY_CROWD_LIST_INFO.java                        |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MINI_RADAR_NOTIFY_ALARMPOINTINFO.java                  |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEVICE_AII_INFO.java                           |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_CROSSLIST_INFO.java                       |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CONFIG_STREAMCONVERTOR_INFO.java                       |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORDBACKUP_TASKID_INFO.java                          |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_GROUP_INFO.java                                |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANIMAL_SCENE_IMAGE_INFO.java                           |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_BABYCARRIAGE.java                                 |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FOLLOW_CAR_ALARM_IMAGE_INFO.java                       |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_MASK_TYPE.java                                    |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_MODRULE.java                        |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AUDIO_SPIRIT.java                                      |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OUTPUT_TYPE.java                                      |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ALARM_SUBSYSTEM_MSG_HANDLE.java                        |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LAMP_COLOR.java                                       |   53 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EMOTION_TYPE.java                                     |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_VALVECONTROL.java                    |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MONITORWALL_SET_COLL_SCHD.java                      |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/DynamicParseUtil.java                                                |  124 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_REGIONNUM_STAT_INFO.java                     |   82 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_OBJECT.java                                    |  132 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKING_STATISTICS_INFO.java             |   95 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_DEVICE_INFO.java                                 |   61 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RAID_ERR_SUBDISK.java                                 |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SOLARCELL_SYSTEM_FAULT_TYPE.java                      |  103 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HUMAN_ANIMAL_ALARM_TYPE.java                          |   65 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/DEV_EVENT_CROSSLINE_INFO.java                    |  158 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_AUTOMOVE_INFO.java                                 |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_FACE_TRAIT.java                                   |   63 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PACKAGE_STATISTICS_BYGRADE.java                     |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_GET_LOCKINFO.java                   |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STAT_ATTRIBUTE.java                                    |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_TEMPERATURE_ALARM_INFO.java                  |   47 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VSP_GAVI_PLATFORM_INFO.java                            |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO.java        |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OBJECT_RADAR_INFO.java                                 |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FILTER_IMAGE_TYPE.java                                |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_LOSS_FRAME_DETECTION.java                        |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_PASSWORD_ENCRYPTION_MODE.java                  |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARM_USER_GROUP.java                                 |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCENICSPOT_GETCAPS_INFO.java                       |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LEAVEDETECTION_STATE.java                             |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEMPERATURE_UNIT_EX.java                              |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PTZ_PRESET_UNIT.java                                       |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_ALARM_USER.java                             |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MONITORWALL_GET_COLL_SCHD.java                      |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSERECORD_GETINFO.java                          |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_WATERDATA_STAT_SERVER_GETCAPS_INFO.java             |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_BACKGROUND_MODE.java               |   10 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_ALGORITHMTYPE_ALGORITHM.java                     |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_IN_FOCUS.java                                    |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/Auxs.java                                                  |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NON_MOTOR_RETROGRADE_INFO.java           |  115 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_ADDRULE.java                        |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PARKINGRULE_INFO.java                          |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_RULECONTENT_CONDITION_PROPERTY.java             |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_ALARM_USER.java                              |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ADD_COURSE.java                                     |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLOTHES_PATTERN.java                                  |   46 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AUDIO_OUTPUT_CHANNEL_INFO.java                         |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STORAGE_DEV_INFOS.java                             |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ANATOMYTEMP_DETECT_SCENE_CAPS.java                     |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_ATTITUDE_TYPE.java                                |  130 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/securityCheck/fNotifyPopulationStatisticsInfo.java          |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB.java          |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_PARAM.java                   |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STORAGE_DEV_INFOS.java                              |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_GET.java              |   37 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVICE_STORAGE_INFO.java                               |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_GET.java                                     |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELIVER_USER_PICTURE.java                           |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/securityCheck/fXRayAttachPackageStatistics.java             |   23 
 ruoyi-admin/src/main/resources/application-dev.yml                                                                     |  201 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_REMOTE_SLEEP.java                                  |   16 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX_IN.java                           |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DIALDETECT_TYPE.java                                  |  110 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SPLIT_SET_OSD_EX.java                              |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CROSSLINE_INFO_EX.java                           |  187 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SCENICSPOT_CAPS_INFO.java                              |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_GET.java               |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO.java        |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SYSTEM_STATUS_CHECK_INFO.java                          |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FORBID_PARKING_STATUS.java                            |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_FALLALARM.java                           |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOCHANNELS_INPUT_EX.java                            |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STAT_DIRECTION.java                                   |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CABINET_STATE_INFO.java                         |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_TRAFFIC_ROAD_RANK.java                               |   75 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_ALARMPOINTINFO.java                          |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_OPERATE_TYPE.java                               |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_GLASSES_TYPE.java                        |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_MOSAIC_TYPE.java                                  |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MANUAL_SNAP_PARAMETER.java                                 |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ASYNC_ADD_CUSTOM_DEVICE.java                       |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NAS_INFO_EX.java                                       |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_GAYS_SERVER_INFO.java                          |   46 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_RADAR_RFIDCARD_INFO.java                    |   21 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POINT_PAIR_EX.java                                     |   41 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_EAP_AUTH_TYPE.java                                |   68 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REMOTE_STREAM_INFO.java                                |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO.java          |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_CURRENTSTATUSGET.java               |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_OPENKEY_INFO.java                  |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_HISTORYDATA_PROPER_INFO.java                    |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_DYNAMIC_LOCK_UPLOAD_RANDOMCODE_INFO.java         |   47 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_GROUP_FROM_VEHICLE_REG_DB.java               |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_HEAT_IMAGING_TEMPER_INFO.java                    |   77 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_CROWD_DISTRI_STREAM_INFO.java                       |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_FIND_WATERDATA_STAT_SERVER_INFO.java          |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEMORY_INFO.java                                       |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AUDIO_SPIRIT_CHANNEL.java                              |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETECT_BIG_PIC_INFO_EX.java                            |   87 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_FORMAT.java                                    |   46 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BARRIERS_INFO.java                                     |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ByteSize16.java                                            |   13 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_QR_CODE_INFO.java                                  |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAIR_STYLE.java                                       |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_DEVREPLACE.java                     |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SUBSTITUTION_DRIVING.java                              |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_ANTI_COUNTERFEIT_INFO.java                   |  114 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILEOPEN.java                    |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TIME.java                                              |   76 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_ABSOLUTELY_CAPS.java                               |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CUR_STEP_INFO.java                                         |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_RAID.java                                      |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/LAMP_GROUP_INFO_V1.java                          |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_POSTURE_TYPE.java                             |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITORWALL_NAME.java                                  |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ARMING_INFO.java                                  |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SupportedModeByteArr.java                                  |   15 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_SPLIT_OPERATE_TYPE.java                              |  169 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSUIT_GROUP_POLICY.java                            |   57 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_ALARM_ANALOGALRM_INFO.java                       |   85 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_GPS_INFO.java                                    |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TIME_RECORDBACKUP_TASK.java                            |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GETFACEEIGEN_INFO.java                              |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_SUBLINK_LISTEN_SERVER.java                    |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MULTI_APPEND_EXTENDED_INFO.java                        |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_FUSED_OBJECT.java                              |   76 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RADAR_REGIONDETECTION_INFO.java                      |  132 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_START_FIND_WATERDATA_CONDITION.java                    |   43 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CONSUMPTION_RECORD_TYPE.java                          |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILE.java                         |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TALK_SEND_DATA_FILE.java                            |   65 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FEATURE_VERSION.java                                  |  162 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DOWNLOAD_MULTI_FILE.java                            |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_TALK_INFO.java                                |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CUSTOM_PERSON_INFO.java                                    |   18 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RTSC_LAMP_RUNNING_INFO.java                          |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RECORD_SNAP_FLAG_TYPE.java                            |  112 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_CLOSE_INFO.java                             |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/THERMOMETRY_SHIELD_INFO.java                               |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SLEEP_DETECT_INFO.java                           |  120 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_BYPASSMODE.java                                 |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_STEREO.java                          |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SYSTEM_STATUS.java                                     |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMELLY_LEVEL.java                                     |   70 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DETACH_TRANSMIT_INFO.java                          |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INSULATOR_STATE.java                                  |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DOWNLOAD_CONDITION_INFO.java                           |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CALIBRATEAREA_TYPE.java                               |   57 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PASSERBY_DB_OVERWRITE_TYPE.java                       |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CLUSTER_STATE_INFO.java                         |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VSP_GAVI_NOTIFY_OBJECT.java                            |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OBJECT_NUM_DETECTION_INFO.java                   |   67 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_COURSE.java                                 |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EMDeviceType.java                                        |  295 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FACE_CHECK.java                                       |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_DIAGNOSIS_RECORD_INFO.java                       |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_OBJECT_GROUP_EVENT_HANDLER.java                   |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MAKE_TOKEN.java                                    |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FACEBODY_ANALYSE_CAPS.java                                 |   45 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTIES_INTARRAY_VALUE.java                         |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_ENVIRONMENT_THERM_INFO.java                        |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_DEV_STORAGE_INFO.java                        |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PRIVACY_MASKING_INFO.java                              |   62 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_RULECONTENT_ACTION_SETPROPERTY.java             |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_THROW_RULE_INFO.java                           |   63 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CREATE_GROUP_FOR_VEHICLE_REG_DB.java                |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_VARLANE_MANAGEMENT_INFO.java              |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_TRACK_INFO.java                             |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CREATE_WORKSUIT_COMPARE_GROUP.java                  |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_WIRELESS_DATA_ENCRYPT.java                        |   68 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RELAY_STATE_TYPE.java                                 |   52 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_TRANSMODE.java                               |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_GATE_POPULATION_STATISTICS_INFO.java         |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MASK_ATTRIBUTE.java                                    |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WEEKS_PLAN_INFO.java                                   |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/GLOBAL_INFO.java                                           |  142 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_CAP_CMD.java                                      |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DOWNLOAD_FILE_TYPE.java                               |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PARK_CONTROL_INFO.java                          |   34 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_CHEF_CLOTHES_COLORS.java                          |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_IVS.java                                        |  484 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_OUTPUT_STATE.java                               |   36 
 ruoyi-admin/src/main/resources/application.yml                                                                         |  210 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LPNET_RECORDFILE_INFO.java                                 |   60 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITORWALL_ENABLE_INFO.java                           |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_RUN_REDLIGHT_INFO.java          |   75 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_WIFI_FAILURE_INFO.java                           |   49 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_WIFI_INFO.java                                    |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INFRARED_LIGHT_LEVEL.java                             |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MOVE_DIRECTLY_INFO.java                             |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_SCENE.java                                         |  268 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DOFIND_FACERECONGNITION_EX.java                    |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_ANALYSE_INFO.java                                  |  192 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CUSTOMINFO_CAPS.java                            |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_CHARGECLEAR.java                     |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSEMEDIA_FILE_INFO.java                             |   45 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RINGS_INFO.java                                        |   29 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_ADD.java               |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_FIND_WATERDATA_STAT_SERVER_INFO.java         |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_BACKUP_STATE.java                            |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEV_STORAGE_SMART_VALUE.java                   |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_RECTLOCATE_INFO.java                       |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEMBERS_INFO.java                                      |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FEATURE_LIST_TYPE.java                                |   57 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_RF_JAMMING_INFO.java                             |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAOBJECT_NUMMAN.java                                   |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO.java                     |   78 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_LOWRATEWPAN.java                             |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PRESET_POSITION.java                                   |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSE_OPEN.java                             |   28 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFICCAR_LANE_TYPE.java                             |   46 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNELS_INFO.java                                     |   46 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACE_PIC_INFO.java                                     |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFICSTARTFINDSTAT.java                           |   61 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_POWER_REGULATION_TYPE.java                            |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/STREAM_RATE_TYPE.java                                    |   63 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CHANNELS_STATE.java                            |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SD_LOCK_STATE.java                                    |   56 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUMERROR.java                                           |  567 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_INSTANCE_SUBCLASS_TYPE.java                       |   49 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROHELMET_ATTRIBUTE.java                               |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPLIT_OSD.java                                         |   88 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_DEVICE_LOG_ITEM_EX.java                                 |   82 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCENICSPOT_GETCAPS_INFO.java                        |   26 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SUPPORT_SCHEDULE_REPORT.java                           |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC.java              |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_LOG_ITEM.java                                          |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RADAR_REPORTS_VEHICLE_INFO.java                            |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_USER_CAPS.java                                  |   36 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PERSON_FEATURE_ERRCODE.java                           |   64 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETECTOR_CONFIG_INFO.java                              |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_POSITION_SNAP_INFO.java                      |   55 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_FINANCIAL_CABIN_INFO.java                      |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_ALARM_USER_PASSWORD.java                    |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DAY_ACTION_INFO.java                                   |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_AREAALARM_INFO.java                                  |   47 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSE_RESULT.java                                     |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SHOW_COLOR.java                                       |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GETFACEEIGEN_INFO.java                             |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_GROUP_FROM_VEHICLE_REG_DB.java              |   16 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_CHANNEL_CFG.java                                |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_DEVICE.java                                    |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PED_DETECTOR_INFO.java                                 |   60 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ADD_REC_BAK_RST_REMOTE_TASK.java                    |   35 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_XRAY_MULTILEVEL_DETECT_INFO.java               |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BAR_CODE_INFO.java                                     |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CAR_DRIVING_IN_INFO.java                         |   88 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_RUNNING_INFO.java                               |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NUMBERSTAT_RULE_INFO.java                              |   16 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_UPGRADE_AI_INFO.java                         |   19 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_LOCK_INFO.java                          |   31 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EMERGENCYSTATUS_TYPE.java                             |   38 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNEL_STATE_INFO_EX.java                             |   44 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE.java                |   51 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_TEMPERATURE.java                               |   54 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_PARTITION_INFO.java                            |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/OBJECT_RELATED_INFO.java                                   |   32 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_FORMAT_TYPE.java                                  |   63 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ARM_FAILED_DETAIL.java                                     |   30 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LAMP_TYPE.java                                        |   75 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_2DCODE_TYPE.java                                  |   80 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/NET_IN_WM_GET_COLLECTIONS_V1.java                |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_PREVIEW_MODE.java                                 |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CONSUMPTION_EVENT_TYPE.java                           |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_RECORD_STATE.java                              |   24 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VSP_GAVI_INFO.java                                     |   79 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_DETECTION_VEHICLE_TYPE.java                     |   94 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_MAN_NUM_INFO.java                                    |   71 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ANATOMY_TEMP_DETECT_PERSON_FILTER.java                     |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CAR_INFO.java                                              |   50 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSITECHANNELMODE_WINDOWS.java                      |   27 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PUSH_ANALYSE_PICTURE_FILE_BYRULE.java               |   42 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FFCPERIOD_RANGE.java                                   |   22 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_TYPE_DESCEIBEINFO.java                          |   52 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_DREGS_UNCOVERED_INFO.java                        |   59 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_QUERY_TEMPERATURE_TYPE.java                           |   53 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABINET_VAULTDOOR.java                       |   39 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_MOVE_CONTINUOUSLY_CAPS.java                        |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_CUSTOM_SNAP_INFO.java                               |   33 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_VIDEOSTAT_HEATMAP.java                      |   17 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLATE_ATTRIBUTE.java                                  |   74 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_IVSEVENT_PARSE_INFO.java                        |   40 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SET_POLLING_CONFIG_INFO.java                           |   57 
 /dev/null                                                                                                              |    1 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CAMERA_CFG.java                                |   25 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_ACCESSCONTROL_MEASURE_TEMP_INFO.java               |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_SIG_CARWAY_INFO_EX.java                                 |   23 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OBJECT_ABNORMAL_INFO.java                        |   77 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_GYRO.java                                   |   20 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRANSMIT_PROXY_TYPE.java                              |   60 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_ABSTRACT_INFO.java                            |   66 
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_VAULTDOOR_STATE_INFO.java                      |   28 
 2,143 files changed, 144,720 insertions(+), 2,709 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/controller/DhSdkController.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/controller/DhSdkController.java
index 7b0ffdf..a2ac3b8 100644
--- a/ard-work/src/main/java/com/ruoyi/device/dhsdk/controller/DhSdkController.java
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/controller/DhSdkController.java
@@ -1,78 +1,107 @@
-package com.ruoyi.device.dhsdk.controller;
-
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import com.ruoyi.common.annotation.Anonymous;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.device.camera.domain.CameraCmd;
-import com.ruoyi.device.dhsdk.service.IDhClientService;
-import com.ruoyi.device.hiksdk.service.IHikClientService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.Resource;
-import java.util.Map;
-
-/**
- * @Description: 大华sdk接口
- * @ClassName: DhSdkController
- * @Author: 刘苏义
- * @Date: 2023年10月14日10:34:58
- **/
-@Api(tags = "大华SDK接口")
-@Controller
-@RequestMapping("/dh")
-@Anonymous
-public class DhSdkController {
-
-    @Resource
-    private IDhClientService sdk;
-
-    /**
-     * @描述 初始加载大华库文件
-     * @参数 []
-     * @返回值 void
-     * @创建人 刘苏义
-     * @创建时间 2023/1/17 16:13
-     * @修改人和其它信息 if (Platform.isLinux())
-     */
-    @PostConstruct
-    public void initDHSDK() {
-        //初始化加载sdk库文件
-        if (sdk.init())
-        {
-            //登录所有相机
-            sdk.loginAll();
-        }
-    }
-
-    @ApiOperation(value = "云台控制", notes = "Code:1-左上 2-上 3-右上 4-左 5-巡航 6-右 7-左下 8-下 9-右下 10-焦距变大 11-焦距变小\n" +
-            "12-焦点前调 13-焦点后调 14-光圈扩大 15-光圈缩小 ")
-    @PostMapping("/pTZControl")
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.speed", "cmd.enable", "cmd.code"})
-    @Log(title = "云台控制", businessType = BusinessType.CONTROL)
-    public @ResponseBody
-    AjaxResult pTZControl(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        return AjaxResult.success(sdk.pTZControl(cmd));
-    }
-
-    @ApiOperation("获取PTZ")
-    @PostMapping("/getPTZ")
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId"})
-    @Log(title = "获取PTZ", businessType = BusinessType.CONTROL)
-    public @ResponseBody
-    AjaxResult getPTZ(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        Map<String, Object> ptzMap = sdk.getPtz(cmd);
-        return AjaxResult.success("获取ptz", ptzMap);
-    }
+package com.ruoyi.device.dhsdk.controller;
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.ruoyi.common.annotation.Anonymous;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.device.camera.domain.CameraCmd;
+import com.ruoyi.device.dhsdk.service.IDhClientService;
+import com.ruoyi.device.hiksdk.service.IHikClientService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import java.util.Map;
+
+/**
+ * @Description: 大华sdk接口
+ * @ClassName: DhSdkController
+ * @Author: 刘苏义
+ * @Date: 2023年10月14日10:34:58
+ **/
+@Api(tags = "大华SDK接口")
+@Controller
+@RequestMapping("/dh")
+@Anonymous
+public class DhSdkController extends BaseController {
+
+    @Resource
+    private IDhClientService sdk;
+
+    /**
+     * @描述 初始加载大华库文件
+     * @参数 []
+     * @返回值 void
+     * @创建人 刘苏义
+     * @创建时间 2023/1/17 16:13
+     * @修改人和其它信息 if (Platform.isLinux())
+     */
+    @PostConstruct
+    public void initDHSDK() {
+        //初始化加载sdk库文件
+        if (sdk.init())
+        {
+            //登录所有相机
+            sdk.loginAll();
+        }
+    }
+
+    @ApiOperation(value = "云台控制", notes = "Code:1-左上 2-上 3-右上 4-左 5-巡航 6-右 7-左下 8-下 9-右下 10-焦距变大 11-焦距变小\n" +
+            "12-焦点前调 13-焦点后调 14-光圈扩大 15-光圈缩小 ")
+    @PostMapping("/pTZControl")
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.speed", "cmd.enable", "cmd.code"})
+    @Log(title = "云台控制", businessType = BusinessType.CONTROL)
+    public @ResponseBody
+    AjaxResult pTZControl(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return toAjax(sdk.pTZControl(cmd));
+    }
+
+    @ApiOperation("获取PTZ")
+    @PostMapping("/getPTZ")
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId"})
+    @Log(title = "获取PTZ", businessType = BusinessType.CONTROL)
+    public @ResponseBody
+    AjaxResult getPTZ(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        Map<String, Object> ptzMap = sdk.getPtz(cmd);
+        return AjaxResult.success("获取ptz", ptzMap);
+    }
+    @ApiOperation("在线状态")
+    @PostMapping("/state")
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId"})
+    @Log(title = "在线状态", businessType = BusinessType.CONTROL)
+    public @ResponseBody
+    AjaxResult getOnlineState(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        boolean onLine = sdk.isOnLine(cmd);
+        return AjaxResult.success(onLine);
+    }
+    @ApiOperation("设置PTZ")
+    @PostMapping("/setPTZ")
+    @Log(title = "设置PTZ", businessType = BusinessType.CONTROL)
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.ptzMap"})
+    public @ResponseBody
+    AjaxResult setPTZ(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return toAjax(sdk.setPtz(cmd));
+    }
+    @ApiOperation("设置零方位角")
+    @PostMapping("/setZeroPTZ")
+    @Log(title = "设置零方位角", businessType = BusinessType.CONTROL)
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
+    public @ResponseBody
+    AjaxResult setZeroPTZ(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return toAjax(sdk.setZeroPtz(cmd));
+    }
 }
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/DynamicParseUtil.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/DynamicParseUtil.java
new file mode 100644
index 0000000..a7941ae
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/DynamicParseUtil.java
@@ -0,0 +1,124 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/ImageAlgLib.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/ImageAlgLib.java
new file mode 100644
index 0000000..635eca8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/ImageAlgLib.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/LastError.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/LastError.java
new file mode 100644
index 0000000..a78762c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/LastError.java
@@ -0,0 +1,497 @@
+package com.ruoyi.device.dhsdk.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_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_FACE_RECOGNITION_SERVER_DELETE_GROUP_ERROR = (0x80000000 | 1079);           // 删除人脸库失败
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_NAME_FORMAT_ERROR = (0x80000000 | 1080);           // 命名格式错误
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_FILEPATH_NOT_SET = (0x80000000 | 1081);           // 图片保存路径未设置
+    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 = (0x8000000 | 1108);    // 调用DH加密库产生安全码失败
+    public static final int NET_ERROR_SECURITY_GET_CONTACT = (0x8000000 | 1109);    // 获取联系方式失败
+    public static final int NET_ERROR_SECURITY_GET_QRCODE = (0x8000000 | 1110);    // 获取重置密码的二维码信息失败
+    public static final int NET_ERROR_SECURITY_CANNOT_RESET = (0x8000000 | 1111);    // 设备未初始化,无法重置
+    public static final int NET_ERROR_SECURITY_NOT_SUPPORT_CONTACT_MODE = (0x8000000 | 1112);    // 不支持设置该种联系方式,如只支持设置手机号,却请求设置邮箱
+    public static final int NET_ERROR_SECURITY_RESPONSE_TIMEOUT = (0x8000000 | 1113);    // 对端响应超时
+    public static final int NET_ERROR_SECURITY_AUTHCODE_FORBIDDEN = (0x8000000 | 1114);    // 尝试校验AuthCode次数过多,禁止校验
+    public static final int NET_ERROR_TRANCODE_LOGIN_REMOTE_DEV = (0x8000000 | 1115);        // (虚拟转码)登陆远程设备失败
+    public static final int NET_ERROR_TRANCODE_NOFREE_CHANNEL = (0x8000000 | 1116);        // (虚拟转码)没有可用的通道资源
+    public static final int NET_ERROR_VK_INFO_DECRYPT_FAILED = (0x8000000 | 1117);        // VK信息解密失败
+    public static final int NET_ERROR_VK_INFO_DESERIALIZE_FAILED = (0x8000000 | 1118);        // VK信息解析失败
+    public static final int NET_ERROR_GDPR_ABILITY_NOT_ENABLE = (0x8000000 | 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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/LibraryLoad.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/LibraryLoad.java
new file mode 100644
index 0000000..af9a250
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/LibraryLoad.java
@@ -0,0 +1,189 @@
+package com.ruoyi.device.dhsdk.lib;
+
+import com.ruoyi.device.dhsdk.lib.DynamicParseUtil;
+import org.xml.sax.SAXException;
+
+import javax.xml.parsers.ParserConfigurationException;
+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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/NativeString.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/NativeString.java
new file mode 100644
index 0000000..bbb2953
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/NativeString.java
@@ -0,0 +1,124 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/NetSDKLib.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/NetSDKLib.java
new file mode 100644
index 0000000..613902d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/NetSDKLib.java
@@ -0,0 +1,37330 @@
+package com.ruoyi.device.dhsdk.lib;
+import com.ruoyi.device.dhsdk.lib.enumeration.*;
+import com.ruoyi.device.dhsdk.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;
+import com.sun.jna.win32.StdCallLibrary.StdCallCallback;
+
+/**
+ * NetSDK JNA接口封装
+ */
+public interface NetSDKLib extends Library {
+
+    NetSDKLib NETSDK_INSTANCE = Native.load("lib/dhDll/dhnetsdk", NetSDKLib.class);
+
+    NetSDKLib CONFIG_INSTANCE = Native.load("lib/dhDll/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 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_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_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_ALARM_IPC                       = 0x218c;           // IPC报警,IPC通过DVR或NVR上报的本地报警(对应结构体 ALARM_IPC_INFO)
+    public static final int NET_EVENT_VIDEOABNORMALDETECTION    = 0x218e;           // 视频异常事件(对应ALARM_VIDEOABNORMAL_DETECTION_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;		    // REID项目上报设备聚档状态事件(对应结构体 NET_ALARM_REID_CLUSTER_STATE_INFO)
+    
+    public static final int NET_CONFIG_RESULT_EVENT_EX          = 0x3000;           // 修改配置的返回码;返回结构见 DEV_SET_RESULT
+    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_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_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_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_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			= 0x3445;			// 交通路口事件(对应结构体 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_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_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)
+
+    /*  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_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_FIGHTDETECTION            = 0x0000000E;       // 斗殴事件(对应 DEV_EVENT_FIGHT_INFO)
+    public static final int EVENT_IVS_VIDEOABNORMALDETECTION    = 0x00000013;       // 视频异常事件(对应 DEV_EVENT_VIDEOABNORMALDETECTION_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 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_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_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_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_WATER_STAGE_MONITOR       = 0x0000030A;       // 水位监测事件
+    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_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_FISHING_DETECTION	   = 0x00000390;		// 钓鱼检测事件(对应 DEV_EVENT_FISHING_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_SPEED_DROP_SHARPLY =	0x00000404;	// 车辆速度剧减事件(对应 DEV_EVENT_TRAFFIC_SPEED_DROP_SHARPLY_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_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)
+    // 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_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. 热成像通道有效
+    /**
+     * 扬声器播放能力(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 =  (NET_PIC_INFO[])new NET_PIC_INFO().toArray(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() {
+        }
+    }
+
+    ///////////////////////////////////目标识别模块相关结构体///////////////////////////////////////
+    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[NET_MAX_PERSON_ID_LEN];//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;							// 开始时间
+        public NET_TIME 	stEndTime;								// 结束时间
+        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 = (GROUP_ID[])new GROUP_ID().toArray(MAX_GOURP_NUM); // 人员组ID
+        public NET_TIME 	stBirthdayRangeStart;   				// 生日起始时间
+        public NET_TIME 	stBirthdayRangeEnd;     				// 生日结束时间
+        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 NET_FACE_FILTER_CONDTION()
+        {
+            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;			// 人员信息查询条件
+        public NET_FACE_MATCH_OPTIONS 			stMatchOptions; 	// 人脸匹配选项
+        public NET_FACE_FILTER_CONDTION 		stFilterInfo;		// 查询过滤条件
+
+        // 图片二进制数据
+        public Pointer 							pBuffer;			// 缓冲地址, char *
+        public int 								nBufferLen;			// 缓冲数据长度
+        public int 								nChannelID;			// 通道号
+
+        public int								bPersonExEnable;	// 人员信息查询条件是否有效, 并使用扩展结构体
+        public FACERECOGNITION_PERSON_INFOEX	stPersonInfoEx;		// 人员信息扩展
+        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 NetSDKLib.EM_SAFE_BELT_STATE}
+         */
+        public int emSafeBelSate;
+        /**
+         * 打电话状态 {@link NetSDKLib.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 NetSDKLib.EM_CATEGORY_TYPE}
+         */
+        public int emCarType;
+        /**
+         * 遮阳板状态 {@link NetSDKLib.NET_SUNSHADE_STATE}
+         */
+        public int emSunShadeState;
+        /**
+         * 是否抽烟 {@link NetSDKLib.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();
+        }
+
+        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;						//包围盒
+        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结束符文本,比如车牌,集装箱号等等
+        // "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;							//物体对应图片信息
+        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;						//针对视频浓缩,当前时间戳(物体抓拍或识别时,会将此识别智能帧附在一个视频帧或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 		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 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();
+        }
+
+        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 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_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 final int SPLITMODE_4A = SPLITMODE_PIP * 4 + 1;
+        public static final int SPLITMODE_EOF = SPLITMODE_COMPOSITE_4+1; //结束标识
+    }
+
+    // 轮巡联动配置
+    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	byte[]					byReserved3=new byte[316];                  //保留字节
+
+        @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];   	  // 保留字节
+
+        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 = (NET_PIC_INFO[])new NET_PIC_INFO().toArray(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
+                = (CUSTOM_PERSON_INFO[])new CUSTOM_PERSON_INFO().toArray(NET_MAX_CUSTOM_PERSON_INFO_NUM);  //注册人员信息扩展
+        public int							emRegisterDbType;									// 注册库类型,详见EM_REGISTER_DB_TYPE
+        public NET_TIME                     stuEffectiveTime;                           // 有效期时间
+        /**
+         * 建模失败原因,对应{@link com.ruoyi.device.dhsdk.lib.enumeration.EM_PERSON_FEATURE_ERRCODE}
+         */
+        public int                          emFeatureErrCode;
+        public int    wFacePicNumEx;    // 人脸图片张数
+        public NET_FACE_PIC_INFO[]    szFacePicInfoEx = (NET_FACE_PIC_INFO[])new NET_FACE_PIC_INFO().toArray(6);    // 当前人员对应的图片信息
+        public NET_PERSON_FEATURE_VALUE_INFO    stuPersonFeatureValue;    // 人员特征信息
+        public   int                     bFrozenStatus;                              // 人员冻结状态
+        public byte[]   szReserved=new byte[4];								// 保留字节
+        public NET_PERSON_FREQUENCY_INFO	stuFrequencyInfo;							// 频次报警信息
+        public  byte[]		szUUID=new byte[64];
+        public byte[]    byReserved = new byte[188];    // 保留字节
+
+    }
+
+    //注册人员信息扩展结构体
+    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.ruoyi.device.dhsdk.lib.enumeration.EM_EYE_STATE_TYPE}
+        * */
+        public int 						emEye;
+        /**嘴巴状态 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_MOUTH_STATE_TYPE}
+         * */
+        public int 						emMouth;
+        /**口罩状态 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_MASK_STATE_TYPE}
+         * */
+        public int  					emMask;
+        /**胡子状态 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_MASK_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;                          // 保留字节,留待扩展
+        
+        public DEV_EVENT_FACEDETECT_INFO() {
+        	int size = new PointerSize().size();
+        	bReserved = new byte[392 - size];// 保留字节
+        }
+    }
+
+    // 事件类型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;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public int                 nLane;                                      // 对应车道号
+        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte                bJamLenght;                                 // 表示拥堵长度(总车道长度百分比)0-100
+        public byte                reserved;                                   // 保留字节
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public NET_TIME_EX         stuStartJamTime;                            // 开始停车时间
+        public int                 nSequence;                                  // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束(bEventAction=2时此参数有效)
+        public int                 nAlarmIntervalTime;                         // 报警时间间隔,单位:秒。(此事件为连续性事件,在收到第一个此事件之后,若在超过间隔时间后未收到此事件的后续事件,则认为此事件异常结束了)
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public NET_RESOLUTION_INFO stuResolution;                              // 对应图片的分辨率
+        public int                 nJamRealLength;                             // 表实际的拥堵长度,单位米
+        public byte[]              bReserved = new byte[1008];                 // 保留字节,留待扩展.
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 交通车辆信息
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+    }
+
+    // 车辆行驶方向
+    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 byte[]                         reserved = new byte[712];        // 保留字节
+
+        @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.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_PLATE_ATTRIBUTE}
+         */
+        public int emPlateAttribute;
+        /**
+         * 保留字节,留待扩展.
+         */
+        public byte[] bReserved = new byte[132];
+    }
+
+    // 禁止名单信息
+    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.ruoyi.device.dhsdk.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 DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar = new 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[NET_EVENT_NAME_LEN];      // 事件名称
+        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                 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
+        public NET_RESOLUTION_INFO stuResolution;                              // 对应图片的分辨率
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 交通车辆信息
+        public int                 nParkingSpaceStatus;                        // 车位状态,0-占用,1-空闲,2-压线
+        public DEV_TRAFFIC_PARKING_INFO stTrafficParingInfo;                   // 停车场信息
+        public byte                byPlateTextSource;                          // 车牌识别来源, 0:本地算法识别,1:后端服务器算法识别
+        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;                                 // 公共信息
+        public NET_INTELLIGENCE_IMAGE_INFO stuParkingImage;                    // 车位图片信息
+        public int                 nConfidence;                                // 事件置信度(0-100)
+        public int                 emAcrossParking;                            // 是否跨位(参考EM_ACROSS_PARKING)
+        public int                 emParkingDirection;                         // 停车方向(参考EM_PARKINGSPACE_DIRECTION)
+        public int                 emForbidParkingStatus;				       // 禁停状态(参考EM_FORBID_PARKING_STATUS)
+        public byte[]			   byReserved1 = new byte[1004];			   // 为图片信息做预留字节,新增的字段请在该保留字节下面添加
+        public int                 emTriggerType;                              // 触发类型(参考EM_PARKING_TRIGGER_TYPE)
+        public DEV_OCCUPIED_WARNING_INFO stuOccupiedWarningInfo;               // 一位多车信息, 如果车位此前没有车占用, 不会带有本字段信息
+        public ParkingNoWithSize32[] szAllParkingNo = new ParkingNoWithSize32[12];    // 所有使能的车位号
+        public int nParkingNoNum;                                               // 使能车位号的个数
+        public int emParkingSpaceType;                                          // 车位有车的事件类型 EM_PARKING_SPACE_TYPE
+        public NET_PARKING_CHANGE_INFO stuParkingChangeInfo;					// 停车变更信息
+    	public Pointer              pstuImageInfo;					            // 图片信息数组 ,结构体NET_IMAGE_INFO_EX2数组指针  
+    	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只支持新卡口事件的配置
+    public static class DEV_EVENT_TRAFFIC_PARKINGSPACENOPARKING_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 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
+        public NET_RESOLUTION_INFO  stuResolution;                             // 对应图片的分辨率
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 交通车辆信息
+        public DEV_TRAFFIC_PARKING_INFO stTrafficParingInfo;                   // 停车场信息
+        public byte                byPlateTextSource;                          // 车牌识别来源, 0:本地算法识别,1:后端服务器算法识别
+        public byte[]              byReserved2 = new byte[3];                  // 字节对齐
+        public byte[]              szParkingNum = new byte[32];                // 车位(地磁)编号,球机项目
+        public int                 dwPresetNum;                                // 球机预置位编号,球机项目
+        public int                 bParkingFault;                              // 车位是否有故障,球机项目
+        public byte[]              bReserved = new byte[368];                  // 保留字节
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+        public NET_INTELLIGENCE_IMAGE_INFO stuGlobalImage;                     // 全景大图信息
+        public NET_INTELLIGENCE_IMAGE_INFO stuParkingImage;                    // 车位图片信息
+        public int                 nConfidence;                                // 事件置信度(0-100)
+        public byte[]			   byReserved1 = new byte[1016];			   // 为图片信息做预留字节,新增的字段请在该保留字节下面添加
+        public int                 emTriggerType;                              // EM_PARKING_TRIGGER_TYPE 触发方式
+        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];                   // 保留字节
+    }
+
+    //事件类型 EVENT_IVS_TRAFFIC_PEDESTRAIN(交通行人事件)对应数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_PEDESTRAIN_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 byte[]              bReserved = new byte[892];                 // 保留字节
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+    }
+
+    //事件类型 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 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;                              // 保留字节   	
+    	public DEV_EVENT_TRAFFICJUNCTION_INFO(){
+            int size = new PointerSize().size();
+            byReserved2=new byte[584-3*size];
+        }
+    }
+
+    // 非机动车对象
+    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.ruoyi.device.dhsdk.lib.enumeration.EM_OBJECT_NONMOTORANGLE_TYPE}
+         */
+        public			int					emNonMotorAngle;
+        /**
+         非机动车车篮 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_OBJECT_BASKET_TYPE}
+         */
+        public			int					emBasket;
+        /**
+         非机动车后备箱 {@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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];
+        /**
+         保留
+         */
+        public			byte[]					byReserved=new byte[2924];
+
+    }
+
+    // 非机动车配牌信息
+    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 byte[]              bReserved = new byte[532];                  // 保留字节,留待扩展.
+        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 NetSDKLib.NET_TIME_EX UTC = new NetSDKLib.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 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 NetSDKLib.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO  stTrafficCar;                   //交通车辆信息
+        public NetSDKLib.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 byte[]              bReserved = new byte[890];          // 保留字节
+    }
+
+    // 事件类型 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 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 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 类型
+        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;					//事件发生时间
+        public NET_GPS_STATUS_INFO   stuGPSStatus;              // 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 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 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 boolean      bRapidQuery;       										 // 是否快速查询, TRUE:为快速,快速查询时不等待所有增、删、改操作完成。默认为非快速查询
+
+        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 NET_TIME				   stuStartRealUTCTime;			                        // 真实UTC起始时间
+    	public NET_TIME				   stuEndRealUTCTime;				                    // 真实UTC结束时间
+
+        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 NET_TIME	  stuCreateTimeRealUTC;				// 刷卡时间,真实UTC时间
+    	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 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_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 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_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 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 boolean 							    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.dahuate.com/1.jpg"
+        // 支持FTP URL表示: "ftp://ftp.dahuate.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 int               	  nHddNum;                  // 硬盘个数
+        public NET_HDD_STATE[]        stuHddStates = new NET_HDD_STATE[NET_MAX_DISKNUM]; // 硬盘状态
+
+        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_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 Callback     			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;                        // 定位时间
+        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.ruoyi.device.dhsdk.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();
+            }
+        }
+
+        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();
+            }
+        }
+
+        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;           	// 未说明
+    }
+
+    /**
+     * 图像成像光源类型
+     *
+     * @author : 260611
+     * @since : Created in 2021/10/19 19:35
+     */
+    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					byReserved[] = new byte[2088];
+
+    }
+
+    // 人体图片信息
+    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 = 12;     // 棕色
+    }
+
+    //上衣类型
+    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.ruoyi.device.dhsdk.lib.enumeration.EM_FACE_CHECK} */
+        public int				emFaceCheck;						// 刷卡开门时,门禁后台校验人脸是否是同一个人()
+        /**  {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_QRCODE_IS_EXPIRED}  */
+        public int		emQRCodeIsExpired;					// 二维码是否过期。默认值0 
+        /**  {@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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;              			   // 结果数组大小, 用户填写
+        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 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 NetSDKLib.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 = -1;
+        public static final int EM_CALL_STATUS_TRYING = 0;					// 通话请求正在处理事件
+        public static final int EM_CALL_STATUS_RINGING = 1;					// 主叫时,被叫回铃事件
+        public static final int EM_CALL_STATUS_PREPARECONNECTED = 2;		// 收到对端通话接通
+        public static final int EM_CALL_STATUS_CONNECTED = 3;				// 双方通话已经正式建立
+        public static final int EM_CALL_STATUS_CALLED = 4;					// 被叫来电事件
+        public static final int EM_CALL_STATUS_PREPARELEAVINGMESSAGE = 5;	// 收到留言请求事件
+        public static final int EM_CALL_STATUS_LEAVINGMESSAGECONNECTED = 6;	// 留言通话接通事件
+        public static final int EM_CALL_STATUS_CALLEND = 7;					// 呼叫结束事件
+        public static final int EM_CALL_STATUS_CALLTRANSFER = 8;			// 转移呼叫到其他设备
+        public static final int EM_CALL_STATUS_CALLTRANSFERCONNECTED = 9;	// 呼叫转移接通
+        public static final int EM_CALL_STATUS_HELD = 10;					// 呼叫保持
+        public static final int EM_CALL_STATUS_RESUME = 11;					// 呼叫召回
+        public static final int EM_CALL_STATUS_DND = 12;						// 免打扰
+        public static final int EM_CALL_STATUS_REMOTESDPCHANGE = 13;			// 远端SDP改变
+        public static final int EM_CALL_STATUS_REFUSE = 14;					// 拒接
+    }
+
+    // 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.ruoyi.device.dhsdk.lib.enumeration.EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE}
+         */
+        public			int					emDetectSenceType;
+        /**
+         保留字节,留待扩展.
+         */
+        public			byte[]					byReserved=new byte[3432];
+    }
+
+    // 事件类型 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;
+        public DEV_EVENT_WORKCLOTHES_DETECT_INFO() {
+            int size= new PointerSize().size();
+            byReserved=new byte[620-size];// 预留字节
+        }       
+    }
+    // 智能事件抓图信息
+    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.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_GREENCNHEALTH_STATUS}
+         */
+        public			int					emGreenCNHealthStatus;
+        /**
+         电子通行证状态(添加)     {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_ALLOW_PERMIT_FLAG}
+         */
+        public			int					emAllowPermitFlag;
+        /**
+        假日组HolidayGroup索引值
+         */
+        public			int					nHolidayGroupIndex;
+        /**
+         信息更新时间,UTC时间
+         */
+        public NET_TIME stuUpdateTime=new NET_TIME();
+
+        public     byte[]                        byReserved;	// 保留字节
+
+        public NET_ACCESS_USER_INFO(){
+            int size
+                    = new PointerSize().size();// 保留字节
+            byReserved=new byte[1272-size];
+        }
+    }
+    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
+    }
+
+    // 卡片信息
+    public static class NET_ACCESS_CARD_INFO extends SdkStructure
+    {
+        public byte[]               szCardNo = new byte[NET_MAX_CARDNO_LEN];                // 卡号
+        public byte[]				szUserID = new byte[NET_MAX_USERID_LEN];				// 用户ID
+        public int      			emType;                                     			// 卡类型,只支持一般卡、胁迫卡和母卡, 对应 NET_ACCESSCTLCARD_TYPE
+        public byte[]			    szDynamicCheckCode = new byte[MAX_COMMON_STRING_16];	// 动态校验码
+        public byte[]               byReserved = new byte[4096];                            // 保留字节
+    }
+
+    // 新增卡片信息入参
+    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;                                   // 保留字节
+
+       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();
+           }
+
+           int size = new PointerSize().size();
+           byReserved=new byte[1600-size*5];
+       }
+    }
+
+    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 StdCallCallback {
+        public void invoke(LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser);
+    }
+
+    // 网络连接恢复回调函数原形
+    public interface fHaveReConnect extends StdCallCallback {
+        public void invoke(LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser);
+    }
+
+    // 消息回调函数原形(pBuf内存由SDK内部申请释放)
+    public interface fMessCallBack extends StdCallCallback{
+        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 StdCallCallback{
+        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 StdCallCallback {
+        // 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 StdCallCallback {
+        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 StdCallCallback{
+        public void invoke(LLong lLoginID, Pointer pBuf, int RevLen, int EncodeType, int CmdSerial, Pointer dwUser);
+    }
+
+    // 异步搜索设备回调(pDevNetInfo内存由SDK内部申请释放)
+    public interface fSearchDevicesCB extends StdCallCallback{
+        public void invoke(Pointer pDevNetInfo, Pointer pUserData);
+    }
+
+    // 按时间回放进度回调函数原形
+    public interface fTimeDownLoadPosCallBack extends StdCallCallback {
+        public void invoke(LLong lPlayHandle, int dwTotalSize, int dwDownLoadSize, int index, NET_RECORDFILE_INFO.ByValue recordfileinfo, Pointer dwUser);
+    }
+    
+    // 回放数据回调函数原形
+    public interface fDataCallBack extends StdCallCallback {
+        public int invoke(LLong lRealHandle, int dwDataType, Pointer pBuffer, int dwBufSize, Pointer dwUser);
+    }
+
+    // 回放进度回调函数原形
+    public interface fDownLoadPosCallBack extends StdCallCallback {
+        public void invoke(LLong lPlayHandle, int dwTotalSize, int dwDownLoadSize, Pointer dwUser);
+    }
+
+    // 视频统计摘要信息回调函数原形,lAttachHandle 是 CLIENT_AttachVideoStatSummary 返回值
+    public interface fVideoStatSumCallBack extends StdCallCallback {
+        public void invoke(LLong lAttachHandle, NET_VIDEOSTAT_SUMMARY pBuf, int dwBufLen, Pointer dwUser);
+    }
+    // 回放数据回调函数原形(扩展)
+    public interface fDataCallBackEx extends StdCallCallback {
+        public int invoke(LLong lRealHandle, NET_DATA_CALL_BACK_INFO pDataCallBack, Pointer dwUser);
+    }
+
+    // 用户自定义的数据回调   lTalkHandle是CLIENT_StartTalkEx的返回值
+    // byAudioFlag:   0表示是本地录音库采集的音频数据 ,  1表示收到的设备发过来的音频数据
+    public interface pfAudioDataCallBack extends StdCallCallback {
+        public void invoke(LLong lTalkHandle, Pointer pDataBuf, int dwBufSize, byte byAudioFlag, Pointer dwUser);
+    }
+
+    // lHandle是文件传输句柄 ,nTransType是文件传输类型,nState是文件传输状态,
+    public interface fTransFileCallBack extends StdCallCallback {
+        public void invoke(LLong lHandle, int nTransType, int nState, int nSendSize, int nTotalSize, Pointer dwUser);
+    }
+
+    // GPS信息订阅回调--扩展
+    public interface fGPSRevEx extends StdCallCallback {
+        public void invoke(LLong lLoginID, GPS_Info.ByValue GpsInfo, ALARM_STATE_INFO.ByValue stAlarmInfo, Pointer dwUserData, Pointer reserved);
+    }
+
+    // GPS信息订阅回调--扩展2
+    public interface fGPSRevEx2 extends StdCallCallback {
+        public void invoke(LLong lLoginID, NET_GPS_LOCATION_INFO lpData, Pointer dwUserData, Pointer reserved);
+    }
+
+    // 实时预览数据回调函数--扩展(pBuffer内存由SDK内部申请释放)
+    // 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 StdCallCallback {
+        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 StdCallCallback{
+        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 StdCallCallback {
+        public void invoke(LLong lOperateHandle, int dwEventType, Pointer param, Pointer dwUser);
+    }
+
+    // 订阅过车记录数据回调函数原型     lAttachHandle为CLIENT_ParkingControlAttachRecord返回值
+    public interface fParkingControlRecordCallBack extends StdCallCallback {
+        public void invoke(LLong lLoginID, LLong lAttachHandle, NET_CAR_PASS_ITEM pInfo, int nBufLen, Pointer dwUser);
+    }
+
+    // 订阅车位信息回调函数原型
+    public interface fParkInfoCallBack extends StdCallCallback {
+        public void invoke(LLong lLoginID, LLong lAttachHandle, NET_PARK_INFO_ITEM pInfo, int nBufLen, Pointer dwUser);
+    }
+
+    // 订阅监测点位信息回调函数原型
+    public interface fSCADAAttachInfoCallBack extends StdCallCallback {
+        public void invoke(LLong lLoginID, LLong lAttachHandle, NET_SCADA_NOTIFY_POINT_INFO_LIST pInfo, int nBufLen, Pointer dwUser);
+    }
+
+    // 透明串口回调函数原形(pBuffer内存由SDK内部申请释放))
+    public interface fTransComCallBack extends StdCallCallback {
+        public void invoke(LLong lLoginID, LLong lTransComChannel, Pointer pBuffer, int dwBufSize, Pointer dwUser);
+    }
+
+    //视频分析进度状态实时回调函数
+    public interface fVideoAnalyseState extends StdCallCallback {
+        public int invoke(LLong lAttachHandle, NET_VIDEOANALYSE_STATE pAnalyseStateInfos, Pointer dwUser, Pointer pReserved);
+    }
+
+    // 侦听服务器回调函数原形
+    public interface fServiceCallBack extends StdCallCallback {
+        public int invoke(LLong lHandle, String pIp, int wPort, int lCommand, Pointer pParam, int dwParamLen, Pointer dwUserData);
+    }
+
+    // 雷达RFID信息回调函数原形
+    public interface fRadarRFIDCardInfoCallBack extends StdCallCallback {
+        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 StdCallCallback {
+        public void invoke(LLong lAttachHandle, int lCommand, Pointer pBuf, int dwBufLen, Pointer dwUser);
+    }
+
+    // GPS温湿度信息订阅回调
+    public interface fGPSTempHumidityRev extends StdCallCallback {
+        public void invoke(LLong lLoginID, GPS_TEMP_HUMIDITY_INFO.ByValue GpsTHInfo, Pointer dwUserData);
+    }
+
+    // 向设备注册的回调函数原型
+    public interface fDeviceStateCallBack extends StdCallCallback {
+        public void invoke(LLong lAttachHandle, NET_CB_ATTACH_DEVICE_STATE pstDeviceState, Pointer dwUser);
+    }
+
+    // 注册添加设备的回调函数原型
+    public interface fAddDeviceCallBack extends StdCallCallback {
+        public void invoke(LLong lAttachHandle, NET_CB_ATTACH_ADD_DEVICE pstAddDevice, Pointer dwUser);
+    }
+
+    // 定义监测点报警信息回调函数原型
+    public interface fSCADAAlarmAttachInfoCallBack extends StdCallCallback {
+        public void invoke(LLong lAttachHandle, NET_SCADA_NOTIFY_POINT_ALARM_INFO_LIST pInfo, int nBufLen, Pointer dwUser);
+    }
+
+    //视频诊断结果上报回调函数
+    public interface fRealVideoDiagnosis extends StdCallCallback {
+        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 StdCallCallback {
+        public void invoke(LLong lAttachHandle, NET_RADIOMETRY_DATA pBuf, int nBufLen, Pointer dwUser);
+    }
+
+    // 刻录设备回调函数原形,lAttachHandle是CLIENT_AttachBurnState返回值, 每次1条,pBuf->dwSize == nBufLen
+    public interface fAttachBurnStateCB extends StdCallCallback {
+        public void invoke(LLong lLoginID, LLong lAttachHandle, NET_CB_BURNSTATE pBuf, int nBufLen, Pointer dwUser);
+    }
+
+    // 刻录设备回调扩展函数原形
+    public interface fAttachBurnStateCBEx extends StdCallCallback {
+        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 StdCallCallback {
+        public void invoke(LLong lLoginID, LLong lUploadHandle, int nTotalSize, int nSendSize, Pointer dwUser);
+    }
+
+
+    // 升级回调
+    public interface fUpgradeCallBackEx extends StdCallCallback {
+        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);
+
+    // 设置配置
+    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 StdCallCallback {
+        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 StdCallCallback {
+       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 StdCallCallback {
+        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 StdCallCallback {
+        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;				                    // 保留字节
+        public DEV_EVENT_FIREWARNING_INFO() {
+        	int size = new PointerSize().size();
+        	byReserved = new byte[1008 - size];// 保留字节
+        }       
+    }
+
+    // 图片类型
+    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 byte[]         szRserved = new byte[4];// 字节对齐
+    	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 StdCallCallback {
+        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 int                     emCategoryType;         // 车辆类型
+        public EVENT_PIC_INFO          stuVehicleImage;        // 车辆抓图信息
+        public NET_COLOR_RGBA          stuColor;               // 车身主要颜色
+        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 byte[]              byReserved2=new byte[2048];				   // 保留字节
+    }
+
+    // 事件类型 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 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;
+        /**
+         * 区域人员列表数量
+         */
+        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.ruoyi.device.dhsdk.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 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 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 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 byte[]                      bReserved=new byte[4092];                    // 保留字节,留待扩展.
+    } ;
+    // 事件类型 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 StdCallCallback{
+        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=1;				    // 推送回调	nParam1 文件总大小 nParam2 已发送大小
+        public static final int EM_REMOTE_UPGRADE_CB_TYPE_EXECUTE=2;					// 执行回调	nParam1 执行execute的结果
+        public static final int EM_REMOTE_UPGRADE_CB_TYPE_FAILED=3;					// 失败回调  nParam1 错误码
+        public static final int EM_REMOTE_UPGRADE_CB_TYPE_CANCEL=4;					// 取消回调
+    };
+
+    // 升级状态回调函数
+    public interface  fRemoteUpgraderStateCallback extends StdCallCallback{
+        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 byte[]				byReserved=new byte[1028];					  // 保留字节,留待扩展.
+    } ;
+
+    // 事件类型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_DEV_PROTOCOL_EHOME = 6;            // ehome 协议
+        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 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;                            // 分析规则信息
+        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;								// 全局配置
+        public NET_ANALYSE_TASK_MODULE			stuModule;								// 模块配置
+    	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[MAX_ANALYSE_TASK_NUM];     // 智能分析任务信息
+
+
+        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.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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(NetSDKLib.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 StdCallCallback{
+        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 = (NET_SECONDARY_ANALYSE_EVENT_INFO[]) new NET_SECONDARY_ANALYSE_EVENT_INFO().toArray(MAX_SECONDARY_ANALYSE_EVENT_NUM);		// 事件信息
+        public int                             	    nEventCount;                            													// 实际的事件个数
+        public NET_TASK_CUSTOM_DATA            	    stuCustomData;                          													// 自定义数据
+        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 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];                           						// 保留字节
+    };
+
+    // 智能分析状态订阅函数原型, lAttachHandle 是 CLIENT_AttachAnalyseTaskResult接口的返回值,pstAnalyseTaskResult对应结构体NET_CB_ANALYSE_TASK_RESULT_INFO
+    public interface fAnalyseTaskResultCallBack extends StdCallCallback{
+        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;             // ehome 协议
+        public static final int EM_DEV_PROTOCOL_HIKVISION = 7;         // 私有协议
+        public static final int EM_DEV_PROTOCOL_BSCP = 8;			   // 蓝星接入协议
+    }
+
+    // 转码视频格式
+    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 StdCallCallback {
+        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 StdCallCallback{
+        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 StdCallCallback {
+        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 StdCallCallback{
+        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 byte[]              byReserved=new byte[1024];                  // 保留字节
+    };
+
+    // 事件类型 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.ruoyi.device.dhsdk.lib.enumeration.NET_EM_LATTICE_SCREEN_SHOW_TYPE}*/
+        public int		emControlType;				 /** 控制方式 {@link com.ruoyi.device.dhsdk.lib.enumeration.NET_EM_LATTICE_SCREEN_CONTROL_TYPE}*/
+        public int	emBackgroundMode;	/** 逻辑屏背景风格模式 {@link com.ruoyi.device.dhsdk.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[]					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 StdCallCallback{
+        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 StdCallCallback {
+        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.ruoyi.device.dhsdk.lib.structure.NET_IN_SET_2DCODE}
+     * @param pOutParam 出参,对应结构体{@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.structure.NET_IN_ATTACH_VIDEOSTAT_HEATMAP}
+     * @Param pOutParam 出参,对应结构体{@link com.ruoyi.device.dhsdk.lib.structure.NET_OUT_ATTACH_VIDEOSTAT_HEATMAP}
+     * 也可使用{@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.structure.NET_IN_GET_VIDEOSTAT_HEATMAP}
+     * @param pOutParam 出参,对应结构体{@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.structure.NET_MATCH_TWO_FACE_IN}
+     * @param pstOutParam 出参{@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.structure.NET_IN_SET_CAMERA_CFG}
+     * @param pOutParam 出参{@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.structure.NET_IN_GET_CAMERA_CFG}
+     * @param pOutParam 出参{@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.structure.NET_IN_SET_CHANNEL_CFG}
+     * @param pOutParam 出参{@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.structure.NET_IN_GET_CHANNEL_CFG}
+     * @param pOutParam 出参{@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.structure.NET_IN_GET_CAMERA_INFO}
+     * @param pOutParam 出参{@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.structure.NET_IN_GET_HEATMAPS_INFO}
+     * @param pstOutParam 出参{@link com.ruoyi.device.dhsdk.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 StdCallCallback {
+        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 StdCallCallback {
+        public void invoke(LLong lLoginID, LLong lAttachHandle, Pointer pBuf, int nBufLen, Pointer dwUser);
+    }
+
+     /**
+      * 获取IPC设备的存储信息
+      * @param lLoginID 登录句柄
+      * @param pstInParam 入参 {@link com.ruoyi.device.dhsdk.lib.structure.NET_IN_GET_DEVICE_AII_INFO}
+      * @param pstOutParam 出参{@link com.ruoyi.device.dhsdk.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 StdCallCallback {
+        public void invoke(LLong lLoginID, LLong lAttachHandle, Pointer pBuf, long dwUser);
+    }
+
+    /**
+     * 订阅交通信号灯状态 , pInParam 和pOutParam 资源由用户申请和释放
+     * @param lLoginID 登录句柄
+     * @param pInParam 入参 {@link com.ruoyi.device.dhsdk.lib.structure.NET_IN_ATTACH_TRAFFICLIGHT_INFO}
+     * @param pOutParam 出参{@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.structure.NET_IN_RADAR_ALARMPOINTINFO}
+     * @param pstOutParam 出参 {@link com.ruoyi.device.dhsdk.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 StdCallCallback {
+        /**
+         *
+         * @param lLoginId 登录句柄
+         * @param lAttachHandle 订阅句柄
+         * @param pBuf {@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.structure.NET_IN_PTZ_STATUS_PROC}
+     * @param pstOutParam 出参{@link com.ruoyi.device.dhsdk.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 StdCallCallback {
+    	 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 StdCallCallback {
+	 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 StdCallCallback {
+    	 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 StdCallCallback {
+    	 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 StdCallCallback {
+        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 StdCallCallback {
+		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 StdCallCallback {
+        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 StdCallCallback {
+        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 StdCallCallback {
+        /**
+         *
+         * @param lLoginId 登录句柄
+         * @param lAttachHandle 订阅句柄
+         * @param pBuf {@link com.ruoyi.device.dhsdk.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 StdCallCallback {
+        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 StdCallCallback {
+     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 StdCallCallback {
+     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 StdCallCallback {
+     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 StdCallCallback {
+     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);
+
+    /**
+     * 订阅大图检测小图进度回调函数原型
+     */
+    public interface fMultiFaceDetectState extends StdCallCallback {
+        public void invoke(LLong lAttachHandle, Pointer pstStates, Pointer dwUser);
+    }
+
+    /**
+     * 订阅大图检测小图进度回调函数原型
+     */
+    public interface fMultiFaceDetectStateEx extends StdCallCallback {
+        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 StdCallCallback {
+        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 StdCallCallback {
+		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.ruoyi.device.dhsdk.lib.structure.optimized.NET_IN_WM_GET_COLLECTIONS_V1}
+     * param[out]pOutParam 接口输出参数, 内存资源由用户申请和释放 {@link com.ruoyi.device.dhsdk.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 StdCallCallback {
+        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 StdCallCallback {
+     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);
+    
+    /**
+     * 获取设备点位信息
+     * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/ToolKits.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/ToolKits.java
new file mode 100644
index 0000000..72e02ca
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/ToolKits.java
@@ -0,0 +1,582 @@
+package com.ruoyi.device.dhsdk.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 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.ruoyi.device.dhsdk.common.ErrorCode;
+import com.ruoyi.device.dhsdk.common.PaintPanel;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.LLong;
+
+import com.ruoyi.device.dhsdk.module.LoginModule;
+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 java.util.Date()).replace(" ", "_").replace(":", "-");
+	    
+	    return date;
+	}
+	
+	// 获取当前时间
+	public static String getDay() {
+			SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM-dd");
+		    String date = simpleDate.format(new java.util.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)) {  
+	    	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 src
+	 * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/Utils.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/Utils.java
new file mode 100644
index 0000000..b51d0c6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/Utils.java
@@ -0,0 +1,210 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/fRedirectServerCallBackEx.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/fRedirectServerCallBackEx.java
new file mode 100644
index 0000000..e3d2d17
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/fRedirectServerCallBackEx.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.callback;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.ToolKits;
+import com.ruoyi.device.dhsdk.lib.structure.NET_CB_REDIRECT_SERVER_CALLBACK_INFO;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/fVideoStatHeatMapCallBack.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/fVideoStatHeatMapCallBack.java
new file mode 100644
index 0000000..3bfacb1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/fVideoStatHeatMapCallBack.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.callback;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/securityCheck/fNotifyPopulationStatisticsInfo.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/securityCheck/fNotifyPopulationStatisticsInfo.java
new file mode 100644
index 0000000..ce94b4c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/securityCheck/fNotifyPopulationStatisticsInfo.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.callback.securityCheck;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/securityCheck/fSecurityGateAttachAlarmStatistics.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/securityCheck/fSecurityGateAttachAlarmStatistics.java
new file mode 100644
index 0000000..e93ea5b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/securityCheck/fSecurityGateAttachAlarmStatistics.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.callback.securityCheck;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/securityCheck/fXRayAttachPackageStatistics.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/securityCheck/fXRayAttachPackageStatistics.java
new file mode 100644
index 0000000..e24c6e2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/callback/securityCheck/fXRayAttachPackageStatistics.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.callback.securityCheck;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.structure.NET_IN_XRAY_PACKAGE_STATISTICS_INFO}
+     * @param dwUser 用户数据
+     */
+    void invoke(
+            NetSDKLib.LLong lAttachHandle,
+            Pointer pInfo,
+            Pointer dwUser);
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/constant/SDKStructureFieldLenth.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/constant/SDKStructureFieldLenth.java
new file mode 100644
index 0000000..db8a032
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/constant/SDKStructureFieldLenth.java
@@ -0,0 +1,87 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/constant/SDK_ALARM_Ex_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/constant/SDK_ALARM_Ex_TYPE.java
new file mode 100644
index 0000000..09f49bf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/constant/SDK_ALARM_Ex_TYPE.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.constant;
+
+import com.ruoyi.device.dhsdk.lib.structure.ALARM_SOLARCELL_SYSTEM_INFO;
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CAPTURE_SIZE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CAPTURE_SIZE.java
new file mode 100644
index 0000000..9f83008
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CAPTURE_SIZE.java
@@ -0,0 +1,258 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_ACCESS_PROPERTY_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_ACCESS_PROPERTY_TYPE.java
new file mode 100644
index 0000000..3dbc6cf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_ACCESS_PROPERTY_TYPE.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_ASG_VOICE_DIRECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_ASG_VOICE_DIRECTION.java
new file mode 100644
index 0000000..8f18c19
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_ASG_VOICE_DIRECTION.java
@@ -0,0 +1,45 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_BODY_TRAIT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_BODY_TRAIT.java
new file mode 100644
index 0000000..f79535d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_BODY_TRAIT.java
@@ -0,0 +1,113 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_FACEDETECT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_FACEDETECT_TYPE.java
new file mode 100644
index 0000000..fb5211a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_FACEDETECT_TYPE.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_FACE_SNAP_POLICY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_FACE_SNAP_POLICY.java
new file mode 100644
index 0000000..f9aa7ce
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_FACE_SNAP_POLICY.java
@@ -0,0 +1,72 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_FACE_TRAIT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_FACE_TRAIT.java
new file mode 100644
index 0000000..c765596
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_FACE_TRAIT.java
@@ -0,0 +1,63 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_INSTANCE_SUBCLASS_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_INSTANCE_SUBCLASS_TYPE.java
new file mode 100644
index 0000000..b118ae9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_INSTANCE_SUBCLASS_TYPE.java
@@ -0,0 +1,49 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_PREVIEW_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_PREVIEW_MODE.java
new file mode 100644
index 0000000..13bbee7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_PREVIEW_MODE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_STREAM_TYPES.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_STREAM_TYPES.java
new file mode 100644
index 0000000..4ed1f55
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_STREAM_TYPES.java
@@ -0,0 +1,72 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_VOICE_ID.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_VOICE_ID.java
new file mode 100644
index 0000000..4fee790
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_EM_VOICE_ID.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_PTZ_FUNC_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_PTZ_FUNC_TYPE.java
new file mode 100644
index 0000000..9cefe35
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_PTZ_FUNC_TYPE.java
@@ -0,0 +1,62 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+/**
+ * @创建人 291189
+ * @创建时间 2021/5/28
+ * @描述
+ */
+public enum CFG_PTZ_FUNC_TYPE {
+    /**
+     * 未知错误
+     */
+    FUNC_TYPE_UNKNOWN(-1, "未知"),
+    /**
+     * 巡航
+     */
+    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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_VIDEO_COMPRESSION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_VIDEO_COMPRESSION.java
new file mode 100644
index 0000000..9b58cd7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/CFG_VIDEO_COMPRESSION.java
@@ -0,0 +1,61 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/DH_LOG_QUERY_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/DH_LOG_QUERY_TYPE.java
new file mode 100644
index 0000000..ddee9f1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/DH_LOG_QUERY_TYPE.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EMDeviceType.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EMDeviceType.java
new file mode 100644
index 0000000..7029229
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EMDeviceType.java
@@ -0,0 +1,295 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ABNORMAL_OBJECT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ABNORMAL_OBJECT_TYPE.java
new file mode 100644
index 0000000..72dea7e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ABNORMAL_OBJECT_TYPE.java
@@ -0,0 +1,52 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESSORY_ALARM_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESSORY_ALARM_TYPE.java
new file mode 100644
index 0000000..9a19178
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESSORY_ALARM_TYPE.java
@@ -0,0 +1,82 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESSORY_INPUT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESSORY_INPUT_TYPE.java
new file mode 100644
index 0000000..52f0127
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESSORY_INPUT_TYPE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESSORY_SENSITIVITY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESSORY_SENSITIVITY.java
new file mode 100644
index 0000000..63deeaf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESSORY_SENSITIVITY.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESSORY_VOLUME.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESSORY_VOLUME.java
new file mode 100644
index 0000000..818055d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESSORY_VOLUME.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESS_SENSOR_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESS_SENSOR_TYPE.java
new file mode 100644
index 0000000..3f53b81
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACCESS_SENSOR_TYPE.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACROSS_PARKING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACROSS_PARKING.java
new file mode 100644
index 0000000..c3edc17
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACROSS_PARKING.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACTION.java
new file mode 100644
index 0000000..93dcdc3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ACTION.java
@@ -0,0 +1,81 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AC_UNLOCK_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AC_UNLOCK_MODE.java
new file mode 100644
index 0000000..46e2cf7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AC_UNLOCK_MODE.java
@@ -0,0 +1,239 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AGE_GROUP_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AGE_GROUP_TYPE.java
new file mode 100644
index 0000000..b5eaf5b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AGE_GROUP_TYPE.java
@@ -0,0 +1,8 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AIRBORNE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AIRBORNE_TYPE.java
new file mode 100644
index 0000000..98f2b87
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AIRBORNE_TYPE.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARMOUT_POLE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARMOUT_POLE.java
new file mode 100644
index 0000000..b663be3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARMOUT_POLE.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARM_ONECLICKARMING_FUNCTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARM_ONECLICKARMING_FUNCTION.java
new file mode 100644
index 0000000..5d36d66
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARM_ONECLICKARMING_FUNCTION.java
@@ -0,0 +1,60 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARM_ONECLICKARMING_TRIGGEROPTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARM_ONECLICKARMING_TRIGGEROPTION.java
new file mode 100644
index 0000000..7ec4667
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARM_ONECLICKARMING_TRIGGEROPTION.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARM_USERAUTHORITY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARM_USERAUTHORITY.java
new file mode 100644
index 0000000..f20f5a4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARM_USERAUTHORITY.java
@@ -0,0 +1,92 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARM_USER_GROUP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARM_USER_GROUP.java
new file mode 100644
index 0000000..a4f8c3d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALARM_USER_GROUP.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALGORITHM_PARTITION_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALGORITHM_PARTITION_TYPE.java
new file mode 100644
index 0000000..c06b60c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALGORITHM_PARTITION_TYPE.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALGORITHM_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALGORITHM_TYPE.java
new file mode 100644
index 0000000..5790ed5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALGORITHM_TYPE.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALLOW_PERMIT_FLAG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALLOW_PERMIT_FLAG.java
new file mode 100644
index 0000000..5fe4163
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ALLOW_PERMIT_FLAG.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ANALYSE_TASK_ERROR.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ANALYSE_TASK_ERROR.java
new file mode 100644
index 0000000..5ade947
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ANALYSE_TASK_ERROR.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ANALYSE_TASK_START_RULE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ANALYSE_TASK_START_RULE.java
new file mode 100644
index 0000000..fb03aef
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ANALYSE_TASK_START_RULE.java
@@ -0,0 +1,62 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ANGLE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ANGLE_TYPE.java
new file mode 100644
index 0000000..9653d0e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ANGLE_TYPE.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ANTI_MISPRESS_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ANTI_MISPRESS_TYPE.java
new file mode 100644
index 0000000..cd19f27
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ANTI_MISPRESS_TYPE.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AREAALARM_TRIGGER_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AREAALARM_TRIGGER_TYPE.java
new file mode 100644
index 0000000..e9a7a1c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AREAALARM_TRIGGER_TYPE.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AREAARM_TRIGGERMODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AREAARM_TRIGGERMODE.java
new file mode 100644
index 0000000..d290224
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AREAARM_TRIGGERMODE.java
@@ -0,0 +1,101 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AREAARM_USER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AREAARM_USER.java
new file mode 100644
index 0000000..474e20a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AREAARM_USER.java
@@ -0,0 +1,85 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ARMING_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ARMING_TYPE.java
new file mode 100644
index 0000000..137e452
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ARMING_TYPE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ARM_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ARM_STATE.java
new file mode 100644
index 0000000..d006fee
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ARM_STATE.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ARM_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ARM_TYPE.java
new file mode 100644
index 0000000..47dc105
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ARM_TYPE.java
@@ -0,0 +1,81 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ASG_WORK_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ASG_WORK_MODE.java
new file mode 100644
index 0000000..0b44c14
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ASG_WORK_MODE.java
@@ -0,0 +1,48 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ASSOCIATED_RECORD_SOURCE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ASSOCIATED_RECORD_SOURCE.java
new file mode 100644
index 0000000..e91f35c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ASSOCIATED_RECORD_SOURCE.java
@@ -0,0 +1,46 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ATTACH_TOPICS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ATTACH_TOPICS.java
new file mode 100644
index 0000000..040b455
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ATTACH_TOPICS.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AUDIO_DATA_SOURCE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AUDIO_DATA_SOURCE_TYPE.java
new file mode 100644
index 0000000..3d7ae8c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AUDIO_DATA_SOURCE_TYPE.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AUDIO_DATA_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AUDIO_DATA_TYPE.java
new file mode 100644
index 0000000..9929370
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AUDIO_DATA_TYPE.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AUDIO_SOURCE_FLAG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AUDIO_SOURCE_FLAG.java
new file mode 100644
index 0000000..2629510
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AUDIO_SOURCE_FLAG.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AUTO_PROTECT_WEEK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AUTO_PROTECT_WEEK.java
new file mode 100644
index 0000000..0e8d7ce
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_AUTO_PROTECT_WEEK.java
@@ -0,0 +1,61 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_ERROR_CODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_ERROR_CODE.java
new file mode 100644
index 0000000..77283f6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_ERROR_CODE.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_FORMAT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_FORMAT.java
new file mode 100644
index 0000000..db589e8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_FORMAT.java
@@ -0,0 +1,46 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_SOURCE_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_SOURCE_MODE.java
new file mode 100644
index 0000000..3586368
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_SOURCE_MODE.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_SOURCE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_SOURCE_TYPE.java
new file mode 100644
index 0000000..9015893
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_SOURCE_TYPE.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_TARGET_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_TARGET_MODE.java
new file mode 100644
index 0000000..089b741
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_TARGET_MODE.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_TARGET_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_TARGET_TYPE.java
new file mode 100644
index 0000000..c54dae6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BACKUP_TARGET_TYPE.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BAG_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BAG_TYPE.java
new file mode 100644
index 0000000..967c86a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BAG_TYPE.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BATTERY_EXIST_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BATTERY_EXIST_STATE.java
new file mode 100644
index 0000000..ea9aac5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BATTERY_EXIST_STATE.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BATTERY_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BATTERY_STATE.java
new file mode 100644
index 0000000..7168693
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BATTERY_STATE.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BATTERY_TEMPER_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BATTERY_TEMPER_STATE.java
new file mode 100644
index 0000000..1d1a93e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BATTERY_TEMPER_STATE.java
@@ -0,0 +1,61 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BEARD_STATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BEARD_STATE_TYPE.java
new file mode 100644
index 0000000..eb4563f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BEARD_STATE_TYPE.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BOAT_DIRECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BOAT_DIRECTION.java
new file mode 100644
index 0000000..8f9a179
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BOAT_DIRECTION.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BREED_DETECT_CATEGORY_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BREED_DETECT_CATEGORY_TYPE.java
new file mode 100644
index 0000000..8fedcd2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BREED_DETECT_CATEGORY_TYPE.java
@@ -0,0 +1,62 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BROADCAST_TEXT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BROADCAST_TEXT_TYPE.java
new file mode 100644
index 0000000..7f0883f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BROADCAST_TEXT_TYPE.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BUTTON_ALARM_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BUTTON_ALARM_TYPE.java
new file mode 100644
index 0000000..5bc0115
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BUTTON_ALARM_TYPE.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BYPASSMODE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BYPASSMODE_TYPE.java
new file mode 100644
index 0000000..0131a7f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_BYPASSMODE_TYPE.java
@@ -0,0 +1,68 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CALIBRATEAREA_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CALIBRATEAREA_TYPE.java
new file mode 100644
index 0000000..dfd8b9e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CALIBRATEAREA_TYPE.java
@@ -0,0 +1,57 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CALLLIFT_ACTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CALLLIFT_ACTION.java
new file mode 100644
index 0000000..c97fe14
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CALLLIFT_ACTION.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CALLLIFT_CMD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CALLLIFT_CMD.java
new file mode 100644
index 0000000..9de24c4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CALLLIFT_CMD.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CALL_ACTION_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CALL_ACTION_TYPE.java
new file mode 100644
index 0000000..81fdce9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CALL_ACTION_TYPE.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAMERA_CONNECT_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAMERA_CONNECT_STATE.java
new file mode 100644
index 0000000..c764730
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAMERA_CONNECT_STATE.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAMERA_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAMERA_STATUS.java
new file mode 100644
index 0000000..832d41a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAMERA_STATUS.java
@@ -0,0 +1,59 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAN_START_STREAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAN_START_STREAM.java
new file mode 100644
index 0000000..86e139e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAN_START_STREAM.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAPTURE_PROCESS_END_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAPTURE_PROCESS_END_TYPE.java
new file mode 100644
index 0000000..b667108
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAPTURE_PROCESS_END_TYPE.java
@@ -0,0 +1,52 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAP_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAP_TYPE.java
new file mode 100644
index 0000000..3314db9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAP_TYPE.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CARD_PROVINCE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CARD_PROVINCE.java
new file mode 100644
index 0000000..0546e29
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CARD_PROVINCE.java
@@ -0,0 +1,154 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAR_COLOR_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAR_COLOR_TYPE.java
new file mode 100644
index 0000000..e1f5c84
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAR_COLOR_TYPE.java
@@ -0,0 +1,166 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAR_DRIVING_DIRECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAR_DRIVING_DIRECTION.java
new file mode 100644
index 0000000..1c9f845
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAR_DRIVING_DIRECTION.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAR_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAR_TYPE.java
new file mode 100644
index 0000000..c452dd7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CAR_TYPE.java
@@ -0,0 +1,938 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CATEGORY_NONMOTOR_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CATEGORY_NONMOTOR_TYPE.java
new file mode 100644
index 0000000..399d626
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CATEGORY_NONMOTOR_TYPE.java
@@ -0,0 +1,82 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CB_STATES.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CB_STATES.java
new file mode 100644
index 0000000..9480749
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CB_STATES.java
@@ -0,0 +1,47 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_3GFLUXTACTIC.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_3GFLUXTACTIC.java
new file mode 100644
index 0000000..25ff306
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_3GFLUXTACTIC.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_APN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_APN.java
new file mode 100644
index 0000000..5687d0b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_APN.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_AUTHMODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_AUTHMODE.java
new file mode 100644
index 0000000..5241913
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_AUTHMODE.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_CAP_CMD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_CAP_CMD.java
new file mode 100644
index 0000000..5f7b21d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_CAP_CMD.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_CHEF_CLOTHES_COLORS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_CHEF_CLOTHES_COLORS.java
new file mode 100644
index 0000000..9fb86be
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_CHEF_CLOTHES_COLORS.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_CROSSREGION_ALARMTYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_CROSSREGION_ALARMTYPE.java
new file mode 100644
index 0000000..8384598
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_CROSSREGION_ALARMTYPE.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_DAY3GFLUXACTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_DAY3GFLUXACTION.java
new file mode 100644
index 0000000..2113f72
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_DAY3GFLUXACTION.java
@@ -0,0 +1,52 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_DAY3GFLUXTACTIC.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_DAY3GFLUXTACTIC.java
new file mode 100644
index 0000000..5d939b8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_DAY3GFLUXTACTIC.java
@@ -0,0 +1,52 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_EAP_AUTH_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_EAP_AUTH_TYPE.java
new file mode 100644
index 0000000..7a8c119
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_EAP_AUTH_TYPE.java
@@ -0,0 +1,68 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_EAP_METHOD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_EAP_METHOD.java
new file mode 100644
index 0000000..153f170
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_EAP_METHOD.java
@@ -0,0 +1,60 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_NAS_CLOUDPROTOCOL_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_NAS_CLOUDPROTOCOL_TYPE.java
new file mode 100644
index 0000000..f64b305
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_NAS_CLOUDPROTOCOL_TYPE.java
@@ -0,0 +1,60 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_NAS_DIRECTORY_CACHE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_NAS_DIRECTORY_CACHE_TYPE.java
new file mode 100644
index 0000000..af019ab
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_NAS_DIRECTORY_CACHE_TYPE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_NAS_DIRECTORY_PROTOCAL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_NAS_DIRECTORY_PROTOCAL.java
new file mode 100644
index 0000000..2aca951
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_NAS_DIRECTORY_PROTOCAL.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_OBJECT_FILTER_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_OBJECT_FILTER_TYPE.java
new file mode 100644
index 0000000..12952b0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_OBJECT_FILTER_TYPE.java
@@ -0,0 +1,52 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_RULE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_RULE_TYPE.java
new file mode 100644
index 0000000..5792931
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_RULE_TYPE.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_WIRELESS_AUTHENTICATION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_WIRELESS_AUTHENTICATION.java
new file mode 100644
index 0000000..59e810b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_WIRELESS_AUTHENTICATION.java
@@ -0,0 +1,97 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_WIRELESS_DATA_ENCRYPT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_WIRELESS_DATA_ENCRYPT.java
new file mode 100644
index 0000000..f773694
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_WIRELESS_DATA_ENCRYPT.java
@@ -0,0 +1,68 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_WORKMODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_WORKMODE.java
new file mode 100644
index 0000000..0b23d82
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CFG_WORKMODE.java
@@ -0,0 +1,84 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CHANNELS_STATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CHANNELS_STATE_TYPE.java
new file mode 100644
index 0000000..e7a12c4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CHANNELS_STATE_TYPE.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CHANNEL_WIDTH.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CHANNEL_WIDTH.java
new file mode 100644
index 0000000..d944e4e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CHANNEL_WIDTH.java
@@ -0,0 +1,57 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CITIZENIDCARD_SEX_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CITIZENIDCARD_SEX_TYPE.java
new file mode 100644
index 0000000..8f3b429
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CITIZENIDCARD_SEX_TYPE.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CITYMOTOR_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CITYMOTOR_STATUS.java
new file mode 100644
index 0000000..0dfc7ea
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CITYMOTOR_STATUS.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLASS_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLASS_TYPE.java
new file mode 100644
index 0000000..ee85b7e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLASS_TYPE.java
@@ -0,0 +1,387 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLOTHES_COLOR.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLOTHES_COLOR.java
new file mode 100644
index 0000000..0c36dd7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLOTHES_COLOR.java
@@ -0,0 +1,138 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLOTHES_LEGAL_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLOTHES_LEGAL_STATE.java
new file mode 100644
index 0000000..073b7f1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLOTHES_LEGAL_STATE.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLOTHES_PATTERN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLOTHES_PATTERN.java
new file mode 100644
index 0000000..b5b7fa1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLOTHES_PATTERN.java
@@ -0,0 +1,46 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLOTHES_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLOTHES_TYPE.java
new file mode 100644
index 0000000..92b6e6f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CLOTHES_TYPE.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COAT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COAT_TYPE.java
new file mode 100644
index 0000000..0cc868b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COAT_TYPE.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CODEID_SENSE_METHOD_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CODEID_SENSE_METHOD_TYPE.java
new file mode 100644
index 0000000..6e51aa6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CODEID_SENSE_METHOD_TYPE.java
@@ -0,0 +1,88 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COLLECTIVITY_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COLLECTIVITY_STATE.java
new file mode 100644
index 0000000..957c1b4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COLLECTIVITY_STATE.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COLLISION_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COLLISION_MODE.java
new file mode 100644
index 0000000..ef1ae17
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COLLISION_MODE.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMMON_SEAT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMMON_SEAT_TYPE.java
new file mode 100644
index 0000000..4375e00
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMMON_SEAT_TYPE.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMM_ATTACHMENT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMM_ATTACHMENT_TYPE.java
new file mode 100644
index 0000000..4de0237
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMM_ATTACHMENT_TYPE.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMPARE_RESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMPARE_RESULT.java
new file mode 100644
index 0000000..a8434fe
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMPARE_RESULT.java
@@ -0,0 +1,60 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMPLIANCE_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMPLIANCE_STATE.java
new file mode 100644
index 0000000..3e75053
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMPLIANCE_STATE.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMPLIANTDETAIL_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMPLIANTDETAIL_TYPE.java
new file mode 100644
index 0000000..0e414f5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMPLIANTDETAIL_TYPE.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMPOSIT_CHANNEL_BIND_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMPOSIT_CHANNEL_BIND_MODE.java
new file mode 100644
index 0000000..b5a1620
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COMPOSIT_CHANNEL_BIND_MODE.java
@@ -0,0 +1,68 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CONSUMPTION_EVENT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CONSUMPTION_EVENT_TYPE.java
new file mode 100644
index 0000000..24bba94
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CONSUMPTION_EVENT_TYPE.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CONSUMPTION_RECORD_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CONSUMPTION_RECORD_TYPE.java
new file mode 100644
index 0000000..3cc2a28
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CONSUMPTION_RECORD_TYPE.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CONSUMPTION_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CONSUMPTION_STATUS.java
new file mode 100644
index 0000000..e577f30
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CONSUMPTION_STATUS.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CONTROL_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CONTROL_MODE.java
new file mode 100644
index 0000000..0393214
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CONTROL_MODE.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COORDINATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COORDINATE_TYPE.java
new file mode 100644
index 0000000..471de8b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COORDINATE_TYPE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COUNTDOWN_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COUNTDOWN_TYPE.java
new file mode 100644
index 0000000..ffb8f48
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COUNTDOWN_TYPE.java
@@ -0,0 +1,53 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSECOMPOSITE_OPERATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSECOMPOSITE_OPERATE_TYPE.java
new file mode 100644
index 0000000..c5da901
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSECOMPOSITE_OPERATE_TYPE.java
@@ -0,0 +1,84 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSERECORD_OPERATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSERECORD_OPERATE_TYPE.java
new file mode 100644
index 0000000..9209986
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSERECORD_OPERATE_TYPE.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSE_LOCK_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSE_LOCK_TYPE.java
new file mode 100644
index 0000000..f663887
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSE_LOCK_TYPE.java
@@ -0,0 +1,69 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSE_RECORD_COMPRESSION_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSE_RECORD_COMPRESSION_TYPE.java
new file mode 100644
index 0000000..4750516
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSE_RECORD_COMPRESSION_TYPE.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSE_RECORD_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSE_RECORD_TYPE.java
new file mode 100644
index 0000000..e0ecd5d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSE_RECORD_TYPE.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSE_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSE_STATE.java
new file mode 100644
index 0000000..23c6bb7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COURSE_STATE.java
@@ -0,0 +1,60 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COVER_PLATE_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COVER_PLATE_STATE.java
new file mode 100644
index 0000000..ef6767c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_COVER_PLATE_STATE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CTRL_SCHEME.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CTRL_SCHEME.java
new file mode 100644
index 0000000..cae6eea
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CTRL_SCHEME.java
@@ -0,0 +1,58 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CURRENT_OPERATE_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CURRENT_OPERATE_MODE.java
new file mode 100644
index 0000000..1f34324
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CURRENT_OPERATE_MODE.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CURRENT_STATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CURRENT_STATE_TYPE.java
new file mode 100644
index 0000000..7b25301
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CURRENT_STATE_TYPE.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOMER_DEV_SETTING_DOOR_METHOD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOMER_DEV_SETTING_DOOR_METHOD.java
new file mode 100644
index 0000000..c05a2cc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOMER_DEV_SETTING_DOOR_METHOD.java
@@ -0,0 +1,89 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_DEV_PROTOCOL_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_DEV_PROTOCOL_TYPE.java
new file mode 100644
index 0000000..7117be8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_DEV_PROTOCOL_TYPE.java
@@ -0,0 +1,79 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_EDUCATION_VOICE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_EDUCATION_VOICE_TYPE.java
new file mode 100644
index 0000000..90968b4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_EDUCATION_VOICE_TYPE.java
@@ -0,0 +1,194 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_MEDICAL_VOICE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_MEDICAL_VOICE_TYPE.java
new file mode 100644
index 0000000..9c15c6c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_MEDICAL_VOICE_TYPE.java
@@ -0,0 +1,86 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_PASSWORD_ENCRYPTION_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_PASSWORD_ENCRYPTION_MODE.java
new file mode 100644
index 0000000..867b1bf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_PASSWORD_ENCRYPTION_MODE.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_SNAP_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_SNAP_TYPE.java
new file mode 100644
index 0000000..0fb5937
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_CUSTOM_SNAP_TYPE.java
@@ -0,0 +1,62 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DATA_SOURCE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DATA_SOURCE_TYPE.java
new file mode 100644
index 0000000..6f24005
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DATA_SOURCE_TYPE.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DEFENCE_AREA_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DEFENCE_AREA_TYPE.java
new file mode 100644
index 0000000..38833dd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DEFENCE_AREA_TYPE.java
@@ -0,0 +1,102 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DELETE_BY_SOURCEUID_ERRCODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DELETE_BY_SOURCEUID_ERRCODE.java
new file mode 100644
index 0000000..1d60769
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DELETE_BY_SOURCEUID_ERRCODE.java
@@ -0,0 +1,69 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DELIVERY_FILE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DELIVERY_FILE_TYPE.java
new file mode 100644
index 0000000..a80006c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DELIVERY_FILE_TYPE.java
@@ -0,0 +1,48 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECTION_SCENE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECTION_SCENE_TYPE.java
new file mode 100644
index 0000000..934d3ba
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECTION_SCENE_TYPE.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECTOR_STATUS_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECTOR_STATUS_TYPE.java
new file mode 100644
index 0000000..144a4c5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECTOR_STATUS_TYPE.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECT_OBJECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECT_OBJECT.java
new file mode 100644
index 0000000..9870519
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECT_OBJECT.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECT_OBJECT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECT_OBJECT_TYPE.java
new file mode 100644
index 0000000..164dd4e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECT_OBJECT_TYPE.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECT_SENSOR_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECT_SENSOR_TYPE.java
new file mode 100644
index 0000000..d455886
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DETECT_SENSOR_TYPE.java
@@ -0,0 +1,76 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DEV_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DEV_STATUS.java
new file mode 100644
index 0000000..083339b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DEV_STATUS.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE.java
new file mode 100644
index 0000000..b724024
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DIALDETECT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DIALDETECT_TYPE.java
new file mode 100644
index 0000000..57e2501
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DIALDETECT_TYPE.java
@@ -0,0 +1,110 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DIAL_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DIAL_STATE.java
new file mode 100644
index 0000000..1fccbf7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DIAL_STATE.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DIRECTION_AFTER_POWER_OFF.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DIRECTION_AFTER_POWER_OFF.java
new file mode 100644
index 0000000..621795c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DIRECTION_AFTER_POWER_OFF.java
@@ -0,0 +1,48 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DISK_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DISK_STATE.java
new file mode 100644
index 0000000..215ec3f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DISK_STATE.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DISPLAY_CAMERA_ANGLE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DISPLAY_CAMERA_ANGLE_TYPE.java
new file mode 100644
index 0000000..0bbabbc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DISPLAY_CAMERA_ANGLE_TYPE.java
@@ -0,0 +1,53 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DOOR_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DOOR_STATE.java
new file mode 100644
index 0000000..008a5a2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DOOR_STATE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DOWNLOAD_DATA_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DOWNLOAD_DATA_TYPE.java
new file mode 100644
index 0000000..0ad6fbf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DOWNLOAD_DATA_TYPE.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DOWNLOAD_FILE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DOWNLOAD_FILE_TYPE.java
new file mode 100644
index 0000000..8f1deaf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DOWNLOAD_FILE_TYPE.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DOWNLOAD_TIME_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DOWNLOAD_TIME_TYPE.java
new file mode 100644
index 0000000..0626bd7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DOWNLOAD_TIME_TYPE.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DRIVING_DIRECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DRIVING_DIRECTION.java
new file mode 100644
index 0000000..3e7353b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DRIVING_DIRECTION.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DYNAMIC_LOCK_ERRORCODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DYNAMIC_LOCK_ERRORCODE.java
new file mode 100644
index 0000000..9e4969c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_DYNAMIC_LOCK_ERRORCODE.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EMERGENCYSTATUS_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EMERGENCYSTATUS_TYPE.java
new file mode 100644
index 0000000..d97cb57
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EMERGENCYSTATUS_TYPE.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EMOTION_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EMOTION_TYPE.java
new file mode 100644
index 0000000..7941eae
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EMOTION_TYPE.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ENCLOSURE_ALARM_TYPE_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ENCLOSURE_ALARM_TYPE_EX.java
new file mode 100644
index 0000000..5f7a56d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ENCLOSURE_ALARM_TYPE_EX.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ENCLOSURE_TYPE_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ENCLOSURE_TYPE_EX.java
new file mode 100644
index 0000000..f2ef120
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ENCLOSURE_TYPE_EX.java
@@ -0,0 +1,68 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ENTRY_DIRECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ENTRY_DIRECTION.java
new file mode 100644
index 0000000..9e0725f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ENTRY_DIRECTION.java
@@ -0,0 +1,63 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ENTRY_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ENTRY_TYPE.java
new file mode 100644
index 0000000..0ca8a40
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ENTRY_TYPE.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_DETECT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_DETECT_TYPE.java
new file mode 100644
index 0000000..597d7e5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_DETECT_TYPE.java
@@ -0,0 +1,68 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_IVS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_IVS.java
new file mode 100644
index 0000000..b1ae518
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_IVS.java
@@ -0,0 +1,484 @@
+package com.ruoyi.device.dhsdk.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(0x0000030A),
+    /**
+     * 暴力抛物检测(对应 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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_IVS_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_IVS_TYPE.java
new file mode 100644
index 0000000..68279c4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_IVS_TYPE.java
@@ -0,0 +1,832 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.structure.DEV_EVENT_NUMBERSTAT_INFO;
+import com.sun.jna.Callback;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 智能分析事件类型
+ * 对应接口{@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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, "定时抓图事件"),
+    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, "智能视频移动侦测事件(人)"),      // ,目前只用于订阅手机推送, 无具体事件
+
+    EVENT_ALARM_SMARTMOTION_VEHICLE(0x0000027A, "智能视频移动侦测事件(车)"),      // ,目前只用于订阅手机推送, 无具体事件
+
+    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.ruoyi.device.dhsdk.lib.structure.DEV_EVENT_SHOP_WINDOW_POST_INFO}
+     */
+
+    EVENT_IVS_SHOP_WINDOW_POST(0x00000287, "橱窗张贴事件"),
+    /**
+     * (对应 DEV_EVENT_SHOP_SIGN_ABNORMAL_INFO)
+     * {@link com.ruoyi.device.dhsdk.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_TRAFFIC_PARKING_STATISTICS(0x0000035B,"车位统计事件"),  //(对应 DEV_EVENT_TRAFFIC_PARKING_STATISTICS_INFO)
+	
+	EVENT_IVS_HEAT_IMAGING_TEMPER(0x0000035C,"热成像测温点温度异常报警事件"),  //(对应 DEV_EVENT_HEAT_IMAGING_TEMPER_INFO)
+	
+	EVENT_IVS_FIRE_EXTINGUISHER_DETECTION(0x0000036C,"灭火器检测事件"),  // 对应DEV_EVENT_FIRE_EXTINGUISHER_DETECTION_INFO
+
+    EVENT_IVS_XRAY_UNPACKING_CHECK(0x00000384,"X光开包检查事件"),      // 对应DEV_EVENT_XRAY_UPACKING_CHECK_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_TEMPERATURE_ALARM(0x0000042A,"温度报警事件"),     // 对应 NET_DEV_EVENT_TEMPERATURE_ALARM_INFO
+    
+	EVENT_IVS_ILLEGAL_CARRIAGE( 0x0000042F,"非法运输事件"),      // (对应 NET_DEV_EVENT_ILLEGAL_CARRIAGE_INFO)
+	
+	EVENT_IVS_GARBAGE_PLASTICBAG( 0x00000459," 打包垃圾检测事件"); // (对应 NET_DEV_EVENT_GARBAGE_PLASTICBAG_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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_LEVEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_LEVEL.java
new file mode 100644
index 0000000..e90a6f7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_LEVEL.java
@@ -0,0 +1,69 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_ORDER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_ORDER.java
new file mode 100644
index 0000000..8d889a5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_ORDER.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_TYPE.java
new file mode 100644
index 0000000..8f964cc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_TYPE.java
@@ -0,0 +1,1513 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.structure.DEV_EVENT_TRAFFIC_NONMOTOR_INFO;
+import com.ruoyi.device.dhsdk.lib.structure.DEV_EVENT_TRAFFIC_REAREND_ACCIDENT_INFO;
+import com.ruoyi.device.dhsdk.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, "交通副驾驶未系安全带事件"),
+    /**
+     * 读写组,原型为"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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_TYPE_DESCEIBEINFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_TYPE_DESCEIBEINFO.java
new file mode 100644
index 0000000..e3da781
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_TYPE_DESCEIBEINFO.java
@@ -0,0 +1,52 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_WORKCLOTHES_RULE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_WORKCLOTHES_RULE_TYPE.java
new file mode 100644
index 0000000..e5b556f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EVENT_WORKCLOTHES_RULE_TYPE.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EXPOWER_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EXPOWER_STATE.java
new file mode 100644
index 0000000..96bf274
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EXPOWER_STATE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EXTERNAL_WIFI_PRIORITY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EXTERNAL_WIFI_PRIORITY.java
new file mode 100644
index 0000000..8d894af
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EXTERNAL_WIFI_PRIORITY.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EYE_STATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EYE_STATE_TYPE.java
new file mode 100644
index 0000000..c699f62
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_EYE_STATE_TYPE.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FACE_APPEND_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FACE_APPEND_STATE.java
new file mode 100644
index 0000000..9aabdd5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FACE_APPEND_STATE.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FACE_CHECK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FACE_CHECK.java
new file mode 100644
index 0000000..6ae7e55
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FACE_CHECK.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FACE_TRAIT_ALIVE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FACE_TRAIT_ALIVE_TYPE.java
new file mode 100644
index 0000000..aa872e4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FACE_TRAIT_ALIVE_TYPE.java
@@ -0,0 +1,7 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FACE_TRAIT_EMOTION_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FACE_TRAIT_EMOTION_TYPE.java
new file mode 100644
index 0000000..4acaf56
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FACE_TRAIT_EMOTION_TYPE.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FEATURE_LIST_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FEATURE_LIST_TYPE.java
new file mode 100644
index 0000000..6a60a2b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FEATURE_LIST_TYPE.java
@@ -0,0 +1,57 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FEATURE_VERSION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FEATURE_VERSION.java
new file mode 100644
index 0000000..fbb463d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FEATURE_VERSION.java
@@ -0,0 +1,162 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FILE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FILE_TYPE.java
new file mode 100644
index 0000000..0703b23
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FILE_TYPE.java
@@ -0,0 +1,49 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FILE_UPDATE_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FILE_UPDATE_STATE.java
new file mode 100644
index 0000000..38e4fd9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FILE_UPDATE_STATE.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FILTER_IMAGE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FILTER_IMAGE_TYPE.java
new file mode 100644
index 0000000..a86299c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FILTER_IMAGE_TYPE.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FIREPROOF_CLOTHES_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FIREPROOF_CLOTHES_STATE.java
new file mode 100644
index 0000000..fcc249f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FIREPROOF_CLOTHES_STATE.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FIRE_EXTINGUISHER_CATEGORY_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FIRE_EXTINGUISHER_CATEGORY_TYPE.java
new file mode 100644
index 0000000..94c845a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FIRE_EXTINGUISHER_CATEGORY_TYPE.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FIRE_LANE_MOVE_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FIRE_LANE_MOVE_STATE.java
new file mode 100644
index 0000000..464855a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FIRE_LANE_MOVE_STATE.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FIRE_LANE_OILCAP_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FIRE_LANE_OILCAP_STATE.java
new file mode 100644
index 0000000..167f4e8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FIRE_LANE_OILCAP_STATE.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE.java
new file mode 100644
index 0000000..910e312
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FOCUS_LIMIT_SELECT_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FOCUS_LIMIT_SELECT_MODE.java
new file mode 100644
index 0000000..40520ef
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FOCUS_LIMIT_SELECT_MODE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FOLLOW_CAR_ALARM_IMAGE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FOLLOW_CAR_ALARM_IMAGE_TYPE.java
new file mode 100644
index 0000000..c2d776e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FOLLOW_CAR_ALARM_IMAGE_TYPE.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FORBID_PARKING_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FORBID_PARKING_STATUS.java
new file mode 100644
index 0000000..d2987de
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FORBID_PARKING_STATUS.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FREQUENCY_ALARM_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FREQUENCY_ALARM_TYPE.java
new file mode 100644
index 0000000..31d86b1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_FREQUENCY_ALARM_TYPE.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GATE_TYPE.java
new file mode 100644
index 0000000..af6479f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GATE_TYPE.java
@@ -0,0 +1,58 @@
+package com.ruoyi.device.dhsdk.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"),
+  /** 摆闸3 */
+  EM_ASG_GATE_TYPE_SWING_GATE_THREE(2, "摆闸3"),
+  /** 翼闸1 */
+  EM_ASG_GATE_TYPE_WING_GATE_ONE(3, "翼闸1"),
+  /** 翼闸2 */
+  EM_ASG_GATE_TYPE_WING_GATE_TWO(4, "翼闸2"),
+  /** 三棍闸1 */
+  EM_ASG_GATE_TYPE_THREE_STICK_GATE_ONE(5, "三棍闸1"),
+  /** 三棍闸2 */
+  EM_ASG_GATE_TYPE_THREE_STICK_GATE_TWO(6, "三棍闸2");
+  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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GATHER_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GATHER_TYPE.java
new file mode 100644
index 0000000..aea1553
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GATHER_TYPE.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GETUSERINFOBYCONDITION_USER_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GETUSERINFOBYCONDITION_USER_STATUS.java
new file mode 100644
index 0000000..8f8f933
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GETUSERINFOBYCONDITION_USER_STATUS.java
@@ -0,0 +1,60 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GETUSERINFOBYCONDITION_USER_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GETUSERINFOBYCONDITION_USER_TYPE.java
new file mode 100644
index 0000000..a217976
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GETUSERINFOBYCONDITION_USER_TYPE.java
@@ -0,0 +1,68 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GLASSES_RULE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GLASSES_RULE_TYPE.java
new file mode 100644
index 0000000..5559720
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GLASSES_RULE_TYPE.java
@@ -0,0 +1,86 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GLASS_STATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GLASS_STATE_TYPE.java
new file mode 100644
index 0000000..f8cea68
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GLASS_STATE_TYPE.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GLOBAL_LANES_LINE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GLOBAL_LANES_LINE_TYPE.java
new file mode 100644
index 0000000..5b517d1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GLOBAL_LANES_LINE_TYPE.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GRANULARITY_STARTFIND_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GRANULARITY_STARTFIND_TYPE.java
new file mode 100644
index 0000000..c26c7ee
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GRANULARITY_STARTFIND_TYPE.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GREENCNHEALTH_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GREENCNHEALTH_STATUS.java
new file mode 100644
index 0000000..4eedf9f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GREENCNHEALTH_STATUS.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GROUP_COLOR_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GROUP_COLOR_TYPE.java
new file mode 100644
index 0000000..0c363a8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GROUP_COLOR_TYPE.java
@@ -0,0 +1,90 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GROUP_GRADE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GROUP_GRADE_TYPE.java
new file mode 100644
index 0000000..6818954
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_GROUP_GRADE_TYPE.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_H264_PROFILE_RANK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_H264_PROFILE_RANK.java
new file mode 100644
index 0000000..ac85bf8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_H264_PROFILE_RANK.java
@@ -0,0 +1,69 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAIR_STYLE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAIR_STYLE.java
new file mode 100644
index 0000000..8c45d62
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAIR_STYLE.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_BABYCARRIAGE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_BABYCARRIAGE.java
new file mode 100644
index 0000000..e034136
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_BABYCARRIAGE.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_BADGE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_BADGE.java
new file mode 100644
index 0000000..5e0fe59
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_BADGE.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_BAG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_BAG.java
new file mode 100644
index 0000000..a3d033f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_BAG.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_DOWNBODY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_DOWNBODY.java
new file mode 100644
index 0000000..3760dd1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_DOWNBODY.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_GLASS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_GLASS.java
new file mode 100644
index 0000000..c0484b6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_GLASS.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_HAT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_HAT.java
new file mode 100644
index 0000000..6821ef5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_HAT.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_HEAD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_HEAD.java
new file mode 100644
index 0000000..1e2a12f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_HEAD.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_HOLD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_HOLD.java
new file mode 100644
index 0000000..8643bd1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_HOLD.java
@@ -0,0 +1,13 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_RAINCOAT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_RAINCOAT.java
new file mode 100644
index 0000000..f7e3108
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_RAINCOAT.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_UMBRELLA.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_UMBRELLA.java
new file mode 100644
index 0000000..48a9a44
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_UMBRELLA.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_VEST.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_VEST.java
new file mode 100644
index 0000000..a2f6f1a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAS_VEST.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAT_STYLE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAT_STYLE.java
new file mode 100644
index 0000000..482f48c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HAT_STYLE.java
@@ -0,0 +1,12 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HEALTH_CODE_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HEALTH_CODE_STATUS.java
new file mode 100644
index 0000000..483bc68
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HEALTH_CODE_STATUS.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HEATMAP_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HEATMAP_TYPE.java
new file mode 100644
index 0000000..478d9d4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HEATMAP_TYPE.java
@@ -0,0 +1,63 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HELMET_EVENT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HELMET_EVENT_TYPE.java
new file mode 100644
index 0000000..517c1c1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HELMET_EVENT_TYPE.java
@@ -0,0 +1,63 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HUMAN_ANIMAL_ALARM_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HUMAN_ANIMAL_ALARM_TYPE.java
new file mode 100644
index 0000000..093dd83
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HUMAN_ANIMAL_ALARM_TYPE.java
@@ -0,0 +1,65 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HUMAN_POSTURE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HUMAN_POSTURE_TYPE.java
new file mode 100644
index 0000000..4dcc681
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_HUMAN_POSTURE_TYPE.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IDCARD_MSG_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IDCARD_MSG_TYPE.java
new file mode 100644
index 0000000..ab4287a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IDCARD_MSG_TYPE.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IMAGE_LIGHT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IMAGE_LIGHT_TYPE.java
new file mode 100644
index 0000000..a76a959
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IMAGE_LIGHT_TYPE.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IMAGE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IMAGE_TYPE.java
new file mode 100644
index 0000000..9375fb4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IMAGE_TYPE.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IMAGE_TYPE_EX2.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IMAGE_TYPE_EX2.java
new file mode 100644
index 0000000..1d2c56c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IMAGE_TYPE_EX2.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INFRARED_FUNC_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INFRARED_FUNC_MODE.java
new file mode 100644
index 0000000..734cc74
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INFRARED_FUNC_MODE.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INFRARED_LIGHT_LEVEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INFRARED_LIGHT_LEVEL.java
new file mode 100644
index 0000000..632ace0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INFRARED_LIGHT_LEVEL.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INSIDE_OBJECT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INSIDE_OBJECT_TYPE.java
new file mode 100644
index 0000000..ac13859
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INSIDE_OBJECT_TYPE.java
@@ -0,0 +1,222 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  物品类型 
+* @date 2022/12/01 16:27:10
+*/
+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,"爆竹");
+
+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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INSTRUMENT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INSTRUMENT_TYPE.java
new file mode 100644
index 0000000..8183652
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INSTRUMENT_TYPE.java
@@ -0,0 +1,98 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INSULATOR_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INSULATOR_STATE.java
new file mode 100644
index 0000000..9ce3deb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_INSULATOR_STATE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IPC_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IPC_TYPE.java
new file mode 100644
index 0000000..d630fc7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IPC_TYPE.java
@@ -0,0 +1,122 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IS_CURRENT_VK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IS_CURRENT_VK.java
new file mode 100644
index 0000000..757d0be
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IS_CURRENT_VK.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IS_ENCRYPT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IS_ENCRYPT.java
new file mode 100644
index 0000000..035b97d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IS_ENCRYPT.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IS_ERRORDETECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IS_ERRORDETECT.java
new file mode 100644
index 0000000..081e057
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IS_ERRORDETECT.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IS_RECORD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IS_RECORD.java
new file mode 100644
index 0000000..9aa20cb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_IS_RECORD.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LAMP_COLOR.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LAMP_COLOR.java
new file mode 100644
index 0000000..f3b48b8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LAMP_COLOR.java
@@ -0,0 +1,53 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LAMP_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LAMP_TYPE.java
new file mode 100644
index 0000000..7f56ec9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LAMP_TYPE.java
@@ -0,0 +1,75 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LANE_RUNING_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LANE_RUNING_STATE.java
new file mode 100644
index 0000000..c172222
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LANE_RUNING_STATE.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LEAVEDETECTION_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LEAVEDETECTION_STATE.java
new file mode 100644
index 0000000..09df2e2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LEAVEDETECTION_STATE.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LEAVEDETECTION_TRIGGER_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LEAVEDETECTION_TRIGGER_MODE.java
new file mode 100644
index 0000000..710d257
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LEAVEDETECTION_TRIGGER_MODE.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LED_BRIGHTNESS_LEVEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LED_BRIGHTNESS_LEVEL.java
new file mode 100644
index 0000000..291a29e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LED_BRIGHTNESS_LEVEL.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LIFT_CALLER_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LIFT_CALLER_TYPE.java
new file mode 100644
index 0000000..c5d7702
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LIFT_CALLER_TYPE.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LIGHTGROUP_FAULT_LEVEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LIGHTGROUP_FAULT_LEVEL.java
new file mode 100644
index 0000000..30e1de0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LIGHTGROUP_FAULT_LEVEL.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LINE_COLOR_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LINE_COLOR_TYPE.java
new file mode 100644
index 0000000..f45a674
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_LINE_COLOR_TYPE.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MAIN_PAGE_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MAIN_PAGE_STATE.java
new file mode 100644
index 0000000..b9512cd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MAIN_PAGE_STATE.java
@@ -0,0 +1,76 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MASK_DETECT_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MASK_DETECT_MODE.java
new file mode 100644
index 0000000..eea641b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MASK_DETECT_MODE.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MASK_STATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MASK_STATE_TYPE.java
new file mode 100644
index 0000000..e16106f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MASK_STATE_TYPE.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MASK_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MASK_TYPE.java
new file mode 100644
index 0000000..5ed3454
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MASK_TYPE.java
@@ -0,0 +1,7 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+// 是否戴口罩
+public enum EM_MASK_TYPE {
+    EM_MASK_UNKNOWN,								// 未知
+    EM_MASK_NO,										// 无
+    EM_MASK_YES,									// 戴
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MIX_SNAP_SPEED_SOURCE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MIX_SNAP_SPEED_SOURCE.java
new file mode 100644
index 0000000..b3f891b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MIX_SNAP_SPEED_SOURCE.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOBILE_ENFORCE_FILE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOBILE_ENFORCE_FILE_TYPE.java
new file mode 100644
index 0000000..86c02ee
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOBILE_ENFORCE_FILE_TYPE.java
@@ -0,0 +1,60 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOBILE_ENFORCE_FORMAT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOBILE_ENFORCE_FORMAT.java
new file mode 100644
index 0000000..d58c950
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOBILE_ENFORCE_FORMAT.java
@@ -0,0 +1,58 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOBILE_ENFORCE_UPLOAD_FLAG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOBILE_ENFORCE_UPLOAD_FLAG.java
new file mode 100644
index 0000000..a7870ac
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOBILE_ENFORCE_UPLOAD_FLAG.java
@@ -0,0 +1,57 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOSAIC_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOSAIC_TYPE.java
new file mode 100644
index 0000000..ec80f60
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOSAIC_TYPE.java
@@ -0,0 +1,77 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOUTH_STATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOUTH_STATE_TYPE.java
new file mode 100644
index 0000000..426ddf0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MOUTH_STATE_TYPE.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MSGROUP_OPERATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MSGROUP_OPERATE_TYPE.java
new file mode 100644
index 0000000..134dfe5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MSGROUP_OPERATE_TYPE.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MSG_OBJ_PERSON_DIRECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MSG_OBJ_PERSON_DIRECTION.java
new file mode 100644
index 0000000..49e9327
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_MSG_OBJ_PERSON_DIRECTION.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NAS_STATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NAS_STATE_TYPE.java
new file mode 100644
index 0000000..7d8da4a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NAS_STATE_TYPE.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NEEDED_PIC_RETURN_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NEEDED_PIC_RETURN_TYPE.java
new file mode 100644
index 0000000..087c698
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NEEDED_PIC_RETURN_TYPE.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_CONSUMPTION_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_CONSUMPTION_MODE.java
new file mode 100644
index 0000000..ebed348
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_CONSUMPTION_MODE.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_PLATE_COLOR_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_PLATE_COLOR_TYPE.java
new file mode 100644
index 0000000..c284f9c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_PLATE_COLOR_TYPE.java
@@ -0,0 +1,94 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_PLATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_PLATE_TYPE.java
new file mode 100644
index 0000000..d79777b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_PLATE_TYPE.java
@@ -0,0 +1,161 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_TRAFFIC_CAR_CONTROL_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_TRAFFIC_CAR_CONTROL_TYPE.java
new file mode 100644
index 0000000..31fe021
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_TRAFFIC_CAR_CONTROL_TYPE.java
@@ -0,0 +1,58 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_VIFORMAT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_VIFORMAT_TYPE.java
new file mode 100644
index 0000000..9816387
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_VIFORMAT_TYPE.java
@@ -0,0 +1,69 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_WIEGAND_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_WIEGAND_MODE.java
new file mode 100644
index 0000000..f375f73
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_WIEGAND_MODE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_WIEGAND_OUT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_WIEGAND_OUT_TYPE.java
new file mode 100644
index 0000000..63f66b1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_WIEGAND_OUT_TYPE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_WIEGAND_TRANSFER_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_WIEGAND_TRANSFER_MODE.java
new file mode 100644
index 0000000..b68f2a3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NET_WIEGAND_TRANSFER_MODE.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NEW_CONFIG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NEW_CONFIG.java
new file mode 100644
index 0000000..d49f2c1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NEW_CONFIG.java
@@ -0,0 +1,406 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.structure.CFG_AUDIO_SPIRIT}) */
+  CFG_CMD_AUDIO_SPIRIT("AudioSpirit"),
+  /** 设备安装位置的GPS坐标信息(对应 {@link com.ruoyi.device.dhsdk.lib.structure.CFG_DEVLOCATION_INFO}) */
+  CFG_CMD_DEVLOCATION("DevLocation"),
+  /** 设备参数标定配置(对应 {@link com.ruoyi.device.dhsdk.lib.structure.CFG_LOCATION_CALIBRATE_INFO}) */
+  CFG_CMD_LOCATION_CALIBRATE("LocationCalibrate"),
+  /** 门禁基本配置(对应 {@link com.ruoyi.device.dhsdk.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_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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NEW_QUERY_SYSTEM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NEW_QUERY_SYSTEM_INFO.java
new file mode 100644
index 0000000..0099dda
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NEW_QUERY_SYSTEM_INFO.java
@@ -0,0 +1,222 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.sun.jna.ptr.IntByReference;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 能力集命令枚举, 对应接口
+ * {@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NONMOTOR_OBJECT_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NONMOTOR_OBJECT_STATUS.java
new file mode 100644
index 0000000..0304500
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NONMOTOR_OBJECT_STATUS.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NTP_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NTP_STATUS.java
new file mode 100644
index 0000000..761429f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NTP_STATUS.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NUMBER_STAT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NUMBER_STAT_TYPE.java
new file mode 100644
index 0000000..597eb08
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_NUMBER_STAT_TYPE.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_ABNORMAL_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_ABNORMAL_TYPE.java
new file mode 100644
index 0000000..5e71270
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_ABNORMAL_TYPE.java
@@ -0,0 +1,53 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_BASKET_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_BASKET_TYPE.java
new file mode 100644
index 0000000..601ea68
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_BASKET_TYPE.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_COLOR_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_COLOR_TYPE.java
new file mode 100644
index 0000000..d8f016f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_COLOR_TYPE.java
@@ -0,0 +1,134 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_NONMOTORANGLE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_NONMOTORANGLE_TYPE.java
new file mode 100644
index 0000000..f42551b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_NONMOTORANGLE_TYPE.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_STORAGEBOX_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_STORAGEBOX_TYPE.java
new file mode 100644
index 0000000..978b7e7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OBJECT_STORAGEBOX_TYPE.java
@@ -0,0 +1,75 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ONLINE_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ONLINE_STATUS.java
new file mode 100644
index 0000000..6175d2f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ONLINE_STATUS.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OPEN_STROBE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OPEN_STROBE_TYPE.java
new file mode 100644
index 0000000..9bbeb4a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OPEN_STROBE_TYPE.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OPERATE_FACERECONGNITIONDB_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OPERATE_FACERECONGNITIONDB_TYPE.java
new file mode 100644
index 0000000..d4f7ea2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OPERATE_FACERECONGNITIONDB_TYPE.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OPERATE_USERINFO_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OPERATE_USERINFO_TYPE.java
new file mode 100644
index 0000000..2afddc1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OPERATE_USERINFO_TYPE.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OPERATION_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OPERATION_MODE.java
new file mode 100644
index 0000000..67ec315
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OPERATION_MODE.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OUTPUT_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OUTPUT_STATE.java
new file mode 100644
index 0000000..b5fdbd8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OUTPUT_STATE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OUTPUT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OUTPUT_TYPE.java
new file mode 100644
index 0000000..b04b6c1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OUTPUT_TYPE.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OVERSEA_VEHICLE_CATEGORY_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OVERSEA_VEHICLE_CATEGORY_TYPE.java
new file mode 100644
index 0000000..2c89369
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_OVERSEA_VEHICLE_CATEGORY_TYPE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PARKINGSPACE_DIRECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PARKINGSPACE_DIRECTION.java
new file mode 100644
index 0000000..d665b01
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PARKINGSPACE_DIRECTION.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PARKINGSPACE_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PARKINGSPACE_STATE.java
new file mode 100644
index 0000000..bba431c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PARKINGSPACE_STATE.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PARKING_TRIGGER_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PARKING_TRIGGER_TYPE.java
new file mode 100644
index 0000000..cfdc874
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PARKING_TRIGGER_TYPE.java
@@ -0,0 +1,65 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PARTITION_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PARTITION_TYPE.java
new file mode 100644
index 0000000..2ecc411
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PARTITION_TYPE.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE.java
new file mode 100644
index 0000000..7faaad3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PASSERBY_DB_OVERWRITE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PASSERBY_DB_OVERWRITE_TYPE.java
new file mode 100644
index 0000000..4d1545e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PASSERBY_DB_OVERWRITE_TYPE.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PASS_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PASS_MODE.java
new file mode 100644
index 0000000..a39043b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PASS_MODE.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PERSON_FEATURE_ERRCODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PERSON_FEATURE_ERRCODE.java
new file mode 100644
index 0000000..917576e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PERSON_FEATURE_ERRCODE.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PIC_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PIC_TYPE.java
new file mode 100644
index 0000000..63f2309
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PIC_TYPE.java
@@ -0,0 +1,62 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLATE_ATTRIBUTE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLATE_ATTRIBUTE.java
new file mode 100644
index 0000000..d639c3d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLATE_ATTRIBUTE.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLATE_COLOR_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLATE_COLOR_TYPE.java
new file mode 100644
index 0000000..16cf945
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLATE_COLOR_TYPE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLATE_TYPE.java
new file mode 100644
index 0000000..bd00c31
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLATE_TYPE.java
@@ -0,0 +1,82 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLAYAUDIO_PRIORITY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLAYAUDIO_PRIORITY.java
new file mode 100644
index 0000000..4b4fddd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLAYAUDIO_PRIORITY.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLAY_WITH_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLAY_WITH_MODE.java
new file mode 100644
index 0000000..c138800
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PLAY_WITH_MODE.java
@@ -0,0 +1,59 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_POWER_REGULATION_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_POWER_REGULATION_TYPE.java
new file mode 100644
index 0000000..9668d39
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_POWER_REGULATION_TYPE.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PREALARM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PREALARM.java
new file mode 100644
index 0000000..2c7258a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PREALARM.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PRESSING_PLATE_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PRESSING_PLATE_STATE.java
new file mode 100644
index 0000000..3032b2d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PRESSING_PLATE_STATE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PRIVACY_MASKING_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PRIVACY_MASKING_TYPE.java
new file mode 100644
index 0000000..361b2a0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PRIVACY_MASKING_TYPE.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PRIVACY_MASKING_VERSION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PRIVACY_MASKING_VERSION.java
new file mode 100644
index 0000000..2361436
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PRIVACY_MASKING_VERSION.java
@@ -0,0 +1,61 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PRIVACY_MASK_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PRIVACY_MASK_TYPE.java
new file mode 100644
index 0000000..ff44b67
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PRIVACY_MASK_TYPE.java
@@ -0,0 +1,52 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PROCESS_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PROCESS_MODE.java
new file mode 100644
index 0000000..5570fb9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PROCESS_MODE.java
@@ -0,0 +1,68 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PROPERTIES_VALUE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PROPERTIES_VALUE_TYPE.java
new file mode 100644
index 0000000..f23298d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PROPERTIES_VALUE_TYPE.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PTZ_MOVING_RESULT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PTZ_MOVING_RESULT_TYPE.java
new file mode 100644
index 0000000..d5acf02
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PTZ_MOVING_RESULT_TYPE.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PTZ_UNSUPPORT_DIRECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PTZ_UNSUPPORT_DIRECTION.java
new file mode 100644
index 0000000..9ca73f0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_PTZ_UNSUPPORT_DIRECTION.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_QRCODE_IS_EXPIRED.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_QRCODE_IS_EXPIRED.java
new file mode 100644
index 0000000..9cfd1a2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_QRCODE_IS_EXPIRED.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_QRCODE_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_QRCODE_STATE.java
new file mode 100644
index 0000000..7074325
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_QRCODE_STATE.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_QUERY_TEMPERATURE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_QUERY_TEMPERATURE_TYPE.java
new file mode 100644
index 0000000..a73c382
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_QUERY_TEMPERATURE_TYPE.java
@@ -0,0 +1,53 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_ALARM_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_ALARM_TYPE.java
new file mode 100644
index 0000000..6b68036
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_ALARM_TYPE.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_DETECTION_VEHICLE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_DETECTION_VEHICLE_TYPE.java
new file mode 100644
index 0000000..b15acc5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_DETECTION_VEHICLE_TYPE.java
@@ -0,0 +1,94 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_DETECT_OBJECT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_DETECT_OBJECT_TYPE.java
new file mode 100644
index 0000000..298ee5a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_DETECT_OBJECT_TYPE.java
@@ -0,0 +1,49 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_GETCAPS_AREASUB_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_GETCAPS_AREASUB_TYPE.java
new file mode 100644
index 0000000..ad9e8f4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_GETCAPS_AREASUB_TYPE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_GETCAPS_RADAR_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_GETCAPS_RADAR_TYPE.java
new file mode 100644
index 0000000..055371e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_GETCAPS_RADAR_TYPE.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_OBJECTTYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_OBJECTTYPE.java
new file mode 100644
index 0000000..351e42c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_OBJECTTYPE.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_OPERATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_OPERATE_TYPE.java
new file mode 100644
index 0000000..ad6905d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_OPERATE_TYPE.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_POINTTYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_POINTTYPE.java
new file mode 100644
index 0000000..d0d8d89
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_POINTTYPE.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_STATUS.java
new file mode 100644
index 0000000..ed1673d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RADAR_STATUS.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RAID_ERROR.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RAID_ERROR.java
new file mode 100644
index 0000000..b58c807
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RAID_ERROR.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RAID_ERR_SUBDISK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RAID_ERR_SUBDISK.java
new file mode 100644
index 0000000..80cd73e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RAID_ERR_SUBDISK.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RAIN_SHED_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RAIN_SHED_TYPE.java
new file mode 100644
index 0000000..7772943
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RAIN_SHED_TYPE.java
@@ -0,0 +1,79 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_REAL_DATA_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_REAL_DATA_TYPE.java
new file mode 100644
index 0000000..31368ba
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_REAL_DATA_TYPE.java
@@ -0,0 +1,61 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_REASON_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_REASON_TYPE.java
new file mode 100644
index 0000000..9b189dc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_REASON_TYPE.java
@@ -0,0 +1,79 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RECORD_BACKUP_FAIL_REASON.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RECORD_BACKUP_FAIL_REASON.java
new file mode 100644
index 0000000..39d543a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RECORD_BACKUP_FAIL_REASON.java
@@ -0,0 +1,99 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RECORD_BACKUP_FIND_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RECORD_BACKUP_FIND_TYPE.java
new file mode 100644
index 0000000..dd437b8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RECORD_BACKUP_FIND_TYPE.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RECORD_SNAP_FLAG_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RECORD_SNAP_FLAG_TYPE.java
new file mode 100644
index 0000000..b95d9a5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RECORD_SNAP_FLAG_TYPE.java
@@ -0,0 +1,112 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RECORD_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RECORD_TYPE.java
new file mode 100644
index 0000000..a5afba7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RECORD_TYPE.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RELAY_STATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RELAY_STATE_TYPE.java
new file mode 100644
index 0000000..f109cb3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RELAY_STATE_TYPE.java
@@ -0,0 +1,52 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RELAY_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RELAY_TYPE.java
new file mode 100644
index 0000000..b30da1e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RELAY_TYPE.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RESPIRATOR_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RESPIRATOR_STATE.java
new file mode 100644
index 0000000..d1529eb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RESPIRATOR_STATE.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RPC_NETAPP_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RPC_NETAPP_TYPE.java
new file mode 100644
index 0000000..33d8002
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_RPC_NETAPP_TYPE.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SAVE_COLLECTION_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SAVE_COLLECTION_TYPE.java
new file mode 100644
index 0000000..86e1c1f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SAVE_COLLECTION_TYPE.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SCENE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SCENE_TYPE.java
new file mode 100644
index 0000000..c2282ac
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SCENE_TYPE.java
@@ -0,0 +1,191 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SCREEN_TEXT_COLOR.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SCREEN_TEXT_COLOR.java
new file mode 100644
index 0000000..d42afb7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SCREEN_TEXT_COLOR.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SCREEN_TEXT_ROLL_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SCREEN_TEXT_ROLL_MODE.java
new file mode 100644
index 0000000..72db84a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SCREEN_TEXT_ROLL_MODE.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SCREEN_TEXT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SCREEN_TEXT_TYPE.java
new file mode 100644
index 0000000..3b59906
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SCREEN_TEXT_TYPE.java
@@ -0,0 +1,65 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SDK_LOG_QUERY_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SDK_LOG_QUERY_TYPE.java
new file mode 100644
index 0000000..1ec9b7d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SDK_LOG_QUERY_TYPE.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SD_ENCRYPT_FLAG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SD_ENCRYPT_FLAG.java
new file mode 100644
index 0000000..294aaac
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SD_ENCRYPT_FLAG.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SD_LOCK_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SD_LOCK_STATE.java
new file mode 100644
index 0000000..ea973ad
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SD_LOCK_STATE.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_ALARM_LEVEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_ALARM_LEVEL.java
new file mode 100644
index 0000000..4d986be
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_ALARM_LEVEL.java
@@ -0,0 +1,57 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_ALARM_POSITION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_ALARM_POSITION.java
new file mode 100644
index 0000000..c7bd8ba
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_ALARM_POSITION.java
@@ -0,0 +1,69 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_EXPRESSION_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_EXPRESSION_TYPE.java
new file mode 100644
index 0000000..fcae12e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_EXPRESSION_TYPE.java
@@ -0,0 +1,65 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_GLASSES_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_GLASSES_TYPE.java
new file mode 100644
index 0000000..1a24830
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_GLASSES_TYPE.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_PERSON_PASS_DIRECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_PERSON_PASS_DIRECTION.java
new file mode 100644
index 0000000..beeaff2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_PERSON_PASS_DIRECTION.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_SEX_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_SEX_TYPE.java
new file mode 100644
index 0000000..7e7fac9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SECURITYGATE_SEX_TYPE.java
@@ -0,0 +1,53 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SEND_SEARCH_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SEND_SEARCH_TYPE.java
new file mode 100644
index 0000000..70350e2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SEND_SEARCH_TYPE.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SERVER_OPTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SERVER_OPTION.java
new file mode 100644
index 0000000..bf6d1db
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SERVER_OPTION.java
@@ -0,0 +1,94 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SEX_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SEX_TYPE.java
new file mode 100644
index 0000000..497f5d2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SEX_TYPE.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SHAPE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SHAPE_TYPE.java
new file mode 100644
index 0000000..3244f6c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SHAPE_TYPE.java
@@ -0,0 +1,65 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SHOES_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SHOES_TYPE.java
new file mode 100644
index 0000000..23f75c4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SHOES_TYPE.java
@@ -0,0 +1,9 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SHOW_COLOR.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SHOW_COLOR.java
new file mode 100644
index 0000000..94e18f4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SHOW_COLOR.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SIGNLIGHT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SIGNLIGHT_TYPE.java
new file mode 100644
index 0000000..3799b76
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SIGNLIGHT_TYPE.java
@@ -0,0 +1,57 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMARTHOME_SCENE_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMARTHOME_SCENE_MODE.java
new file mode 100644
index 0000000..0b3bbc7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMARTHOME_SCENE_MODE.java
@@ -0,0 +1,60 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMART_KITCHEN_CLOTHES_COLOUR.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMART_KITCHEN_CLOTHES_COLOUR.java
new file mode 100644
index 0000000..1549c8c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMART_KITCHEN_CLOTHES_COLOUR.java
@@ -0,0 +1,57 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMART_KITCHEN_CLOTHES_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMART_KITCHEN_CLOTHES_STATE.java
new file mode 100644
index 0000000..546e614
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMART_KITCHEN_CLOTHES_STATE.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMELLY_LEVEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMELLY_LEVEL.java
new file mode 100644
index 0000000..4255157
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMELLY_LEVEL.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMOKE_COLOR.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMOKE_COLOR.java
new file mode 100644
index 0000000..aa7d92e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SMOKE_COLOR.java
@@ -0,0 +1,58 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SNAPCATEGORY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SNAPCATEGORY.java
new file mode 100644
index 0000000..76b9d36
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SNAPCATEGORY.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SNAP_POLICY_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SNAP_POLICY_TYPE.java
new file mode 100644
index 0000000..e7621ea
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SNAP_POLICY_TYPE.java
@@ -0,0 +1,58 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SOLARCELL_SYSTEM_FAULT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SOLARCELL_SYSTEM_FAULT_TYPE.java
new file mode 100644
index 0000000..577f847
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SOLARCELL_SYSTEM_FAULT_TYPE.java
@@ -0,0 +1,103 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SOURCE_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SOURCE_MODE.java
new file mode 100644
index 0000000..6f13ec9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SOURCE_MODE.java
@@ -0,0 +1,45 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SOURCE_VIDEO_LOCATION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SOURCE_VIDEO_LOCATION.java
new file mode 100644
index 0000000..f662798
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SOURCE_VIDEO_LOCATION.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SPACE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SPACE_TYPE.java
new file mode 100644
index 0000000..c864e51
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SPACE_TYPE.java
@@ -0,0 +1,81 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STANDARD_VEHICLE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STANDARD_VEHICLE_TYPE.java
new file mode 100644
index 0000000..efae2ba
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STANDARD_VEHICLE_TYPE.java
@@ -0,0 +1,150 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STARTFIND_DIRECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STARTFIND_DIRECTION.java
new file mode 100644
index 0000000..a12ee08
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STARTFIND_DIRECTION.java
@@ -0,0 +1,61 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STARTUP_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STARTUP_MODE.java
new file mode 100644
index 0000000..a29fbcd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STARTUP_MODE.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STATISTICS_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STATISTICS_MODE.java
new file mode 100644
index 0000000..36d75eb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STATISTICS_MODE.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STATUS.java
new file mode 100644
index 0000000..aca9b3f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STATUS.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STAT_DIRECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STAT_DIRECTION.java
new file mode 100644
index 0000000..71fbf5e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STAT_DIRECTION.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STAT_GRANULARITY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STAT_GRANULARITY.java
new file mode 100644
index 0000000..40aeb9b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STAT_GRANULARITY.java
@@ -0,0 +1,52 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STEREO_ACTION_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STEREO_ACTION_TYPE.java
new file mode 100644
index 0000000..296cabc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STEREO_ACTION_TYPE.java
@@ -0,0 +1,53 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_DEVICE_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_DEVICE_STATUS.java
new file mode 100644
index 0000000..c56d8ee
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_DEVICE_STATUS.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_DISK_POWERMODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_DISK_POWERMODE.java
new file mode 100644
index 0000000..31ecad4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_DISK_POWERMODE.java
@@ -0,0 +1,9 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_DISK_PREDISKCHECK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_DISK_PREDISKCHECK.java
new file mode 100644
index 0000000..aa73248
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_DISK_PREDISKCHECK.java
@@ -0,0 +1,13 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_HEALTH_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_HEALTH_TYPE.java
new file mode 100644
index 0000000..fd360ec
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_HEALTH_TYPE.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_PACKET_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_PACKET_TYPE.java
new file mode 100644
index 0000000..1000a15
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STORAGE_PACKET_TYPE.java
@@ -0,0 +1,7 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;/**
+ * @author 47081
+ * @description
+ * @date 2021/2/20
+ * @version 1.0
+ */public enum EM_STORAGE_PACKET_TYPE {
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STRABISMUS_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STRABISMUS_TYPE.java
new file mode 100644
index 0000000..4230246
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_STRABISMUS_TYPE.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUBCLASSID_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUBCLASSID_TYPE.java
new file mode 100644
index 0000000..cda1801
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUBCLASSID_TYPE.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUBLINK_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUBLINK_MODE.java
new file mode 100644
index 0000000..78b0d39
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUBLINK_MODE.java
@@ -0,0 +1,53 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUBLINK_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUBLINK_STATE.java
new file mode 100644
index 0000000..4bbc984
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUBLINK_STATE.java
@@ -0,0 +1,68 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUBLINK_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUBLINK_TYPE.java
new file mode 100644
index 0000000..0a4db2d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUBLINK_TYPE.java
@@ -0,0 +1,59 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORTED_COLOR_LIST_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORTED_COLOR_LIST_TYPE.java
new file mode 100644
index 0000000..7e79fbb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORTED_COLOR_LIST_TYPE.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORTFINGERPRINT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORTFINGERPRINT.java
new file mode 100644
index 0000000..ee53f34
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORTFINGERPRINT.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+/**
+ * 是否支持信息功能
+ */
+public enum EM_SUPPORTFINGERPRINT {
+    /**
+     * 未知
+     */
+    EM_SUPPORTFINGERPRINT_UNKNOWN,
+    /**
+     * 不支持信息功能
+     */
+    EM_SUPPORTFINGERPRINT_NONSUPPORT,
+    /**
+     * 支持信息功能
+     */
+    EM_SUPPORTFINGERPRINT_SUPPORT,
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_CLOSE_UP_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_CLOSE_UP_TYPE.java
new file mode 100644
index 0000000..be7f043
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_CLOSE_UP_TYPE.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_FAST_CHECK_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_FAST_CHECK_TYPE.java
new file mode 100644
index 0000000..212e164
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_FAST_CHECK_TYPE.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_FAST_IMPORT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_FAST_IMPORT_TYPE.java
new file mode 100644
index 0000000..7721e43
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_FAST_IMPORT_TYPE.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_FOCUS_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_FOCUS_MODE.java
new file mode 100644
index 0000000..f8f2348
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_FOCUS_MODE.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_HELMET_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_HELMET_TYPE.java
new file mode 100644
index 0000000..a552c55
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_HELMET_TYPE.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_LOCALDATA_STORE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_LOCALDATA_STORE.java
new file mode 100644
index 0000000..e908bc1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_SUPPORT_LOCALDATA_STORE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TALK_AUDIO_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TALK_AUDIO_TYPE.java
new file mode 100644
index 0000000..95bd56d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TALK_AUDIO_TYPE.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TAMPERALTERSTATUS_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TAMPERALTERSTATUS_TYPE.java
new file mode 100644
index 0000000..f13dd51
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TAMPERALTERSTATUS_TYPE.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TANK_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TANK_STATUS.java
new file mode 100644
index 0000000..0d45964
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TANK_STATUS.java
@@ -0,0 +1,60 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEMPERATUREEX_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEMPERATUREEX_TYPE.java
new file mode 100644
index 0000000..faa09a8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEMPERATUREEX_TYPE.java
@@ -0,0 +1,80 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEMPERATURE_UNIT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEMPERATURE_UNIT.java
new file mode 100644
index 0000000..fbd4c05
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEMPERATURE_UNIT.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEMPERATURE_UNIT_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEMPERATURE_UNIT_EX.java
new file mode 100644
index 0000000..8c322b3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEMPERATURE_UNIT_EX.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEMP_MEASURE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEMP_MEASURE_TYPE.java
new file mode 100644
index 0000000..3b6dbd7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEMP_MEASURE_TYPE.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEST_ITEMS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEST_ITEMS.java
new file mode 100644
index 0000000..5151b1a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TEST_ITEMS.java
@@ -0,0 +1,59 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THERMAL_IMAGE_CALIBRATION_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THERMAL_IMAGE_CALIBRATION_MODE.java
new file mode 100644
index 0000000..3b4ea6a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THERMAL_IMAGE_CALIBRATION_MODE.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_ACTION_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_ACTION_TYPE.java
new file mode 100644
index 0000000..04ff77b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_ACTION_TYPE.java
@@ -0,0 +1,62 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_CONDITION_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_CONDITION_TYPE.java
new file mode 100644
index 0000000..edb243d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_CONDITION_TYPE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_CONNECT_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_CONNECT_STATE.java
new file mode 100644
index 0000000..4febddc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_CONNECT_STATE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_CURRENTSTATUSGET_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_CURRENTSTATUSGET_STATUS.java
new file mode 100644
index 0000000..4810d16
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_CURRENTSTATUSGET_STATUS.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_RULECONTENT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_RULECONTENT_TYPE.java
new file mode 100644
index 0000000..b2a3a67
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_RULECONTENT_TYPE.java
@@ -0,0 +1,62 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_SERVICE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_SERVICE_TYPE.java
new file mode 100644
index 0000000..c040339
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_SERVICE_TYPE.java
@@ -0,0 +1,118 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_TRIGGER_TIMER_CORN_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_TRIGGER_TIMER_CORN_TYPE.java
new file mode 100644
index 0000000..9ef0c9d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_TRIGGER_TIMER_CORN_TYPE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_TRIGGER_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_TRIGGER_TYPE.java
new file mode 100644
index 0000000..72777d7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_THINGS_TRIGGER_TYPE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TITLE_TEXT_ALIGNTYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TITLE_TEXT_ALIGNTYPE.java
new file mode 100644
index 0000000..fa1b69b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TITLE_TEXT_ALIGNTYPE.java
@@ -0,0 +1,85 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TOLLS_VEHICLE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TOLLS_VEHICLE_TYPE.java
new file mode 100644
index 0000000..dae88b1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TOLLS_VEHICLE_TYPE.java
@@ -0,0 +1,122 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFICCAR_CAR_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFICCAR_CAR_TYPE.java
new file mode 100644
index 0000000..63ba869
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFICCAR_CAR_TYPE.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFICCAR_LANE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFICCAR_LANE_TYPE.java
new file mode 100644
index 0000000..ac5398f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFICCAR_LANE_TYPE.java
@@ -0,0 +1,46 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFICCAR_MOVE_DIRECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFICCAR_MOVE_DIRECTION.java
new file mode 100644
index 0000000..8c7865d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFICCAR_MOVE_DIRECTION.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFICSTROBE_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFICSTROBE_STATUS.java
new file mode 100644
index 0000000..db51fe9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFICSTROBE_STATUS.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_EVENT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_EVENT.java
new file mode 100644
index 0000000..4075fd6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_EVENT.java
@@ -0,0 +1,58 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_FLOW_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_FLOW_STATUS.java
new file mode 100644
index 0000000..12eb798
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_FLOW_STATUS.java
@@ -0,0 +1,65 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_LIGHT_DETECT_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_LIGHT_DETECT_STATE.java
new file mode 100644
index 0000000..23db769
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_LIGHT_DETECT_STATE.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_DEVICE_WORK_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_DEVICE_WORK_STATE.java
new file mode 100644
index 0000000..fe2195d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_DEVICE_WORK_STATE.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE.java
new file mode 100644
index 0000000..0518c90
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE.java
@@ -0,0 +1,53 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_RADAR_COIL_MATCH_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_RADAR_COIL_MATCH_STATE.java
new file mode 100644
index 0000000..82c93c1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_RADAR_COIL_MATCH_STATE.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_RADAR_DETECT_CAR_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_RADAR_DETECT_CAR_STATE.java
new file mode 100644
index 0000000..19fc10e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_RADAR_DETECT_CAR_STATE.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE.java
new file mode 100644
index 0000000..fb877a8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE.java
@@ -0,0 +1,75 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE.java
new file mode 100644
index 0000000..a1986b5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE.java
@@ -0,0 +1,107 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE.java
new file mode 100644
index 0000000..6f924d4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE.java
new file mode 100644
index 0000000..83a290e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE.java
@@ -0,0 +1,52 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_RUN_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_RUN_STATE.java
new file mode 100644
index 0000000..ac3f31f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_RUN_STATE.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRANSMIT_PROXY_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRANSMIT_PROXY_MODE.java
new file mode 100644
index 0000000..a86fb9b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRANSMIT_PROXY_MODE.java
@@ -0,0 +1,60 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRANSMIT_PROXY_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRANSMIT_PROXY_TYPE.java
new file mode 100644
index 0000000..7e1aae7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRANSMIT_PROXY_TYPE.java
@@ -0,0 +1,60 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAVELCODE_COLOR_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAVELCODE_COLOR_STATE.java
new file mode 100644
index 0000000..04f03ba
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAVELCODE_COLOR_STATE.java
@@ -0,0 +1,9 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAVEL_CODE_COLOR.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAVEL_CODE_COLOR.java
new file mode 100644
index 0000000..7839d6c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRAVEL_CODE_COLOR.java
@@ -0,0 +1,57 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRFAFFIC_LIGHT_SOURCE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRFAFFIC_LIGHT_SOURCE.java
new file mode 100644
index 0000000..b81a2fd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRFAFFIC_LIGHT_SOURCE.java
@@ -0,0 +1,61 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRFAFFIC_LIGHT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRFAFFIC_LIGHT_TYPE.java
new file mode 100644
index 0000000..55ecc5d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRFAFFIC_LIGHT_TYPE.java
@@ -0,0 +1,59 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRIGGER_OCCUR_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRIGGER_OCCUR_TYPE.java
new file mode 100644
index 0000000..7cb601d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRIGGER_OCCUR_TYPE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRIGGER_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRIGGER_TYPE.java
new file mode 100644
index 0000000..9e9e08a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TRIGGER_TYPE.java
@@ -0,0 +1,58 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TROUSERS_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TROUSERS_TYPE.java
new file mode 100644
index 0000000..3f348fd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_TROUSERS_TYPE.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UNIFIED_COLOR_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UNIFIED_COLOR_TYPE.java
new file mode 100644
index 0000000..e82fe9a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UNIFIED_COLOR_TYPE.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UNIFORM_STYLE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UNIFORM_STYLE.java
new file mode 100644
index 0000000..33a28b7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UNIFORM_STYLE.java
@@ -0,0 +1,11 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UPDATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UPDATE_TYPE.java
new file mode 100644
index 0000000..ed3cafb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UPDATE_TYPE.java
@@ -0,0 +1,69 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UPLOAD_FLAG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UPLOAD_FLAG.java
new file mode 100644
index 0000000..0afbb4b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UPLOAD_FLAG.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UPPER_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UPPER_TYPE.java
new file mode 100644
index 0000000..4185b64
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_UPPER_TYPE.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD.java
new file mode 100644
index 0000000..2cd7b27
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD.java
@@ -0,0 +1,58 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_USER_PASS_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_USER_PASS_TYPE.java
new file mode 100644
index 0000000..20580b9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_USER_PASS_TYPE.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_USE_PROPERTY_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_USE_PROPERTY_TYPE.java
new file mode 100644
index 0000000..cc538f5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_USE_PROPERTY_TYPE.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VAULT_DOORSTATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VAULT_DOORSTATE.java
new file mode 100644
index 0000000..0cfcca4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VAULT_DOORSTATE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VAULT_LOCKSTATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VAULT_LOCKSTATE.java
new file mode 100644
index 0000000..ce0951d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VAULT_LOCKSTATE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLEINOUT_CAR_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLEINOUT_CAR_TYPE.java
new file mode 100644
index 0000000..538e629
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLEINOUT_CAR_TYPE.java
@@ -0,0 +1,81 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_DRIVING_DIRECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_DRIVING_DIRECTION.java
new file mode 100644
index 0000000..e3fc03c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_DRIVING_DIRECTION.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_HEAD_DIRECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_HEAD_DIRECTION.java
new file mode 100644
index 0000000..1f8ba5c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_HEAD_DIRECTION.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_POSITION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_POSITION.java
new file mode 100644
index 0000000..7b456ae
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_POSITION.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_POSTURE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_POSTURE_TYPE.java
new file mode 100644
index 0000000..117b130
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_POSTURE_TYPE.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_REG_DB_OPERATOR_ERRCODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_REG_DB_OPERATOR_ERRCODE.java
new file mode 100644
index 0000000..e83670a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_REG_DB_OPERATOR_ERRCODE.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_TYPE.java
new file mode 100644
index 0000000..e721425
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_TYPE.java
@@ -0,0 +1,94 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_TYPE_SPLIT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_TYPE_SPLIT.java
new file mode 100644
index 0000000..99a2224
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VEHICLE_TYPE_SPLIT.java
@@ -0,0 +1,52 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEODIAGNOSIS_TASK_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEODIAGNOSIS_TASK_STATE.java
new file mode 100644
index 0000000..b2cf395
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEODIAGNOSIS_TASK_STATE.java
@@ -0,0 +1,45 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEOINPUTS_SERVICE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEOINPUTS_SERVICE_TYPE.java
new file mode 100644
index 0000000..3c27643
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEOINPUTS_SERVICE_TYPE.java
@@ -0,0 +1,62 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEO_ABNORMAL_DETECT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEO_ABNORMAL_DETECT_TYPE.java
new file mode 100644
index 0000000..86d107c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEO_ABNORMAL_DETECT_TYPE.java
@@ -0,0 +1,134 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEO_FILE_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEO_FILE_STATE.java
new file mode 100644
index 0000000..d823d37
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEO_FILE_STATE.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEO_STREAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEO_STREAM.java
new file mode 100644
index 0000000..40fb751
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEO_STREAM.java
@@ -0,0 +1,59 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEO_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEO_TYPE.java
new file mode 100644
index 0000000..a7768e6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIDEO_TYPE.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIRTUAL_COIL_OCCUPANCY_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIRTUAL_COIL_OCCUPANCY_STATUS.java
new file mode 100644
index 0000000..4d912f4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VIRTUAL_COIL_OCCUPANCY_STATUS.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VOLTAGE_STATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VOLTAGE_STATE_TYPE.java
new file mode 100644
index 0000000..4803e25
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VOLTAGE_STATE_TYPE.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+public enum EM_VOLTAGE_STATE_TYPE {
+    EM_VOLTAGE_STATE_UNKNOWN(1,"电压状态未知"),                           // 未知
+    EM_VOLTAGE_STATE_OVER (2, "电压过高"),                           // 过压
+    EM_VOLTAGE_STATE_NORMAL (3, "电压正常"),                           // 正常
+    EM_VOLTAGE_STATE_UNDER (4, "欠压");                           // 欠压
+
+    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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VSP_GAVI_PLATFORM_CODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VSP_GAVI_PLATFORM_CODE.java
new file mode 100644
index 0000000..9977da1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_VSP_GAVI_PLATFORM_CODE.java
@@ -0,0 +1,52 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WATERDATA_STAT_SERVER_SUPPORT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WATERDATA_STAT_SERVER_SUPPORT.java
new file mode 100644
index 0000000..5707962
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WATERDATA_STAT_SERVER_SUPPORT.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WATER_DETECTION_ALARM_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WATER_DETECTION_ALARM_TYPE.java
new file mode 100644
index 0000000..4c580a2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WATER_DETECTION_ALARM_TYPE.java
@@ -0,0 +1,126 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WATER_QUALITY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WATER_QUALITY.java
new file mode 100644
index 0000000..1e7a317
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WATER_QUALITY.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WEARING_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WEARING_STATE.java
new file mode 100644
index 0000000..f792a58
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WEARING_STATE.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WEB_TUNNEL_PROTOCOL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WEB_TUNNEL_PROTOCOL.java
new file mode 100644
index 0000000..c9e741d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WEB_TUNNEL_PROTOCOL.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WIRELESS_DEVICE_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WIRELESS_DEVICE_MODE.java
new file mode 100644
index 0000000..185fca7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WIRELESS_DEVICE_MODE.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WLAN_SCAN_AND_CONFIG_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WLAN_SCAN_AND_CONFIG_TYPE.java
new file mode 100644
index 0000000..e13a2b6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WLAN_SCAN_AND_CONFIG_TYPE.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKACTION_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKACTION_STATE.java
new file mode 100644
index 0000000..7e1e06d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKACTION_STATE.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKCLOTHES_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKCLOTHES_STATE.java
new file mode 100644
index 0000000..1d5e6d4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKCLOTHES_STATE.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKPANTS_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKPANTS_STATE.java
new file mode 100644
index 0000000..74ab9c2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKPANTS_STATE.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSTATDETECTION_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSTATDETECTION_TYPE.java
new file mode 100644
index 0000000..e511e82
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSTATDETECTION_TYPE.java
@@ -0,0 +1,83 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSUIT_ABSTRACT_ERRCODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSUIT_ABSTRACT_ERRCODE.java
new file mode 100644
index 0000000..677ca90
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSUIT_ABSTRACT_ERRCODE.java
@@ -0,0 +1,69 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSUIT_APPEND_ERRCODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSUIT_APPEND_ERRCODE.java
new file mode 100644
index 0000000..0984b8b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSUIT_APPEND_ERRCODE.java
@@ -0,0 +1,81 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSUIT_GROUP_POLICY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSUIT_GROUP_POLICY.java
new file mode 100644
index 0000000..afb7d17
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSUIT_GROUP_POLICY.java
@@ -0,0 +1,57 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSUIT_GROUP_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSUIT_GROUP_TYPE.java
new file mode 100644
index 0000000..cc56942
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORKSUIT_GROUP_TYPE.java
@@ -0,0 +1,53 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORK_HELMET_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORK_HELMET_STATE.java
new file mode 100644
index 0000000..6d4583a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_WORK_HELMET_STATE.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_XRAY_IMAGE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_XRAY_IMAGE_TYPE.java
new file mode 100644
index 0000000..ae241b3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_XRAY_IMAGE_TYPE.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL.java
new file mode 100644
index 0000000..d641e50
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL.java
@@ -0,0 +1,90 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_XRAY_PACKAGE_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_XRAY_PACKAGE_MODE.java
new file mode 100644
index 0000000..9556e96
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_XRAY_PACKAGE_MODE.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ZONE_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ZONE_STATUS.java
new file mode 100644
index 0000000..e0ac04a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/EM_ZONE_STATUS.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUMERROR.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUMERROR.java
new file mode 100644
index 0000000..7079a4d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUMERROR.java
@@ -0,0 +1,567 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_IN_REGION_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_IN_REGION_STATUS.java
new file mode 100644
index 0000000..77b7ea7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_IN_REGION_STATUS.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_MOTION_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_MOTION_STATUS.java
new file mode 100644
index 0000000..0ce8e9d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_MOTION_STATUS.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_RECORDBACKUP_FILE_PROGRESS_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_RECORDBACKUP_FILE_PROGRESS_TYPE.java
new file mode 100644
index 0000000..e78525b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_RECORDBACKUP_FILE_PROGRESS_TYPE.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_RECORDBACKUP_FILE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_RECORDBACKUP_FILE_TYPE.java
new file mode 100644
index 0000000..8c038f2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_RECORDBACKUP_FILE_TYPE.java
@@ -0,0 +1,57 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_VAGEOBJECT_ACTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_VAGEOBJECT_ACTION.java
new file mode 100644
index 0000000..318755b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/ENUM_VAGEOBJECT_ACTION.java
@@ -0,0 +1,61 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/GetDevCaps_Type.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/GetDevCaps_Type.java
new file mode 100644
index 0000000..9a6d3a1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/GetDevCaps_Type.java
@@ -0,0 +1,196 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+/**
+ * @author 47081
+ * @desc
+ * @version 1.0.0
+ * @date 2021/4/12
+ */
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.structure.NET_IN_VIDEOIN_DAYNIGHT_CAPS;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_ACCESS_ERRORCODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_ACCESS_ERRORCODE.java
new file mode 100644
index 0000000..aac84ed
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_ACCESS_ERRORCODE.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_CODEID_ERROR_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_CODEID_ERROR_TYPE.java
new file mode 100644
index 0000000..518e110
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_CODEID_ERROR_TYPE.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_COURSECOMPOSITE_MODE_OPERATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_COURSECOMPOSITE_MODE_OPERATE_TYPE.java
new file mode 100644
index 0000000..14c9c2c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_COURSECOMPOSITE_MODE_OPERATE_TYPE.java
@@ -0,0 +1,79 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_2DCODE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_2DCODE_TYPE.java
new file mode 100644
index 0000000..8fd2d3c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_2DCODE_TYPE.java
@@ -0,0 +1,80 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_ATTITUDE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_ATTITUDE_TYPE.java
new file mode 100644
index 0000000..85b51bd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_ATTITUDE_TYPE.java
@@ -0,0 +1,130 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_CFG_OPERATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_CFG_OPERATE_TYPE.java
new file mode 100644
index 0000000..13947e0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_CFG_OPERATE_TYPE.java
@@ -0,0 +1,426 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.structure.NET_CFG_VSP_GAYS_SERVER_INFO;
+import com.sun.jna.Pointer;
+import com.sun.jna.ptr.IntByReference;
+import com.ruoyi.device.dhsdk.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
+    
+    /*********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.ruoyi.device.dhsdk.lib.structure.NET_COMPOSE_CHANNEL_INFO}
+     */
+    public static final int NET_EM_CFG_COMPOSE_CHANNEL =
+            1401; // 合成通道配置, 对应结构体 NET_COMPOSE_CHANNEL_INFO
+    /**
+     * 刻录参数, 对应结构体 {@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_ETH_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_ETH_STATE.java
new file mode 100644
index 0000000..752da6d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_ETH_STATE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_FAILCODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_FAILCODE.java
new file mode 100644
index 0000000..452b399
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_FAILCODE.java
@@ -0,0 +1,76 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_FLOW_ATTRIBUTE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_FLOW_ATTRIBUTE.java
new file mode 100644
index 0000000..6575c2f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_FLOW_ATTRIBUTE.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_FORMAT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_FORMAT_TYPE.java
new file mode 100644
index 0000000..fd64ebb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_FORMAT_TYPE.java
@@ -0,0 +1,63 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_GET_ALARMREGION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_GET_ALARMREGION_INFO.java
new file mode 100644
index 0000000..9da86e0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_GET_ALARMREGION_INFO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_IMAGE_QUALITY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_IMAGE_QUALITY.java
new file mode 100644
index 0000000..cbfc114
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_IMAGE_QUALITY.java
@@ -0,0 +1,59 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_INTELLIPARKING_DATA_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_INTELLIPARKING_DATA_TYPE.java
new file mode 100644
index 0000000..14b1536
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_INTELLIPARKING_DATA_TYPE.java
@@ -0,0 +1,52 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_BACKGROUND_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_BACKGROUND_MODE.java
new file mode 100644
index 0000000..064add6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_BACKGROUND_MODE.java
@@ -0,0 +1,10 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_CONTROL_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_CONTROL_TYPE.java
new file mode 100644
index 0000000..e7459a3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_CONTROL_TYPE.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_LOGO_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_LOGO_TYPE.java
new file mode 100644
index 0000000..8037b56
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_LOGO_TYPE.java
@@ -0,0 +1,8 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_SHOW_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_SHOW_TYPE.java
new file mode 100644
index 0000000..649a5a1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_SHOW_TYPE.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LOGIC_CHANNEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LOGIC_CHANNEL.java
new file mode 100644
index 0000000..6099828
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LOGIC_CHANNEL.java
@@ -0,0 +1,109 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_AREATYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_AREATYPE.java
new file mode 100644
index 0000000..5080389
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_AREATYPE.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_COLORTYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_COLORTYPE.java
new file mode 100644
index 0000000..fe55a77
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_COLORTYPE.java
@@ -0,0 +1,57 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_DISPLAYTYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_DISPLAYTYPE.java
new file mode 100644
index 0000000..6741f2e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_DISPLAYTYPE.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_ELEM_NAMETYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_ELEM_NAMETYPE.java
new file mode 100644
index 0000000..646e1ca
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_ELEM_NAMETYPE.java
@@ -0,0 +1,63 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_FONTCOLOR.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_FONTCOLOR.java
new file mode 100644
index 0000000..fe29106
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_FONTCOLOR.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_FONTSIZE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_FONTSIZE.java
new file mode 100644
index 0000000..9b7d367
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_FONTSIZE.java
@@ -0,0 +1,57 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_SHOWMODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_SHOWMODE.java
new file mode 100644
index 0000000..c46a857
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_SHOWMODE.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_TRANSMODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_TRANSMODE.java
new file mode 100644
index 0000000..968c6b0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_LXSJ_TRANSMODE.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_MASK_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_MASK_TYPE.java
new file mode 100644
index 0000000..41caa26
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_MASK_TYPE.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_MOSAIC_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_MOSAIC_TYPE.java
new file mode 100644
index 0000000..fe7a8bd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_MOSAIC_TYPE.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_OFFLINE_CALL_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_OFFLINE_CALL_TYPE.java
new file mode 100644
index 0000000..6e6ea0e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_OFFLINE_CALL_TYPE.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_OVER_FLOW_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_OVER_FLOW_STATE.java
new file mode 100644
index 0000000..fc06786
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_OVER_FLOW_STATE.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_POWER_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_POWER_TYPE.java
new file mode 100644
index 0000000..f91ae94
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_POWER_TYPE.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_RADAR_RFIDCARD_ACTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_RADAR_RFIDCARD_ACTION.java
new file mode 100644
index 0000000..cc6cc42
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_RADAR_RFIDCARD_ACTION.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_RECORD_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_RECORD_MODE.java
new file mode 100644
index 0000000..0b5759f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_RECORD_MODE.java
@@ -0,0 +1,65 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SCENEDETECTION_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SCENEDETECTION_TYPE.java
new file mode 100644
index 0000000..bba6c3d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SCENEDETECTION_TYPE.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SCENE_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SCENE_MODE.java
new file mode 100644
index 0000000..e1ef103
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SCENE_MODE.java
@@ -0,0 +1,81 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SCREEN_SHOW_CONTENTS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SCREEN_SHOW_CONTENTS.java
new file mode 100644
index 0000000..e71104c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SCREEN_SHOW_CONTENTS.java
@@ -0,0 +1,112 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SDK_LOCAL_CFG_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SDK_LOCAL_CFG_TYPE.java
new file mode 100644
index 0000000..a6420c5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SDK_LOCAL_CFG_TYPE.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SET_ALARMREGION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SET_ALARMREGION_INFO.java
new file mode 100644
index 0000000..34af5d6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SET_ALARMREGION_INFO.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+/**
+ * @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类型为NET_IN_SET_ALARMMODE,
+	 * pstuOutParam类型为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类型为NET_IN_SET_BYPASSMODE,
+	 * pstuOutParam类型为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类型为NET_IN_SET_OUTPUT_STATE,
+	 * pstuOutParam类型为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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SHAPE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SHAPE_TYPE.java
new file mode 100644
index 0000000..bb4fdd9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SHAPE_TYPE.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SIM_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SIM_STATE.java
new file mode 100644
index 0000000..7b55957
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_SIM_STATE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_STAFF_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_STAFF_TYPE.java
new file mode 100644
index 0000000..997d7f4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_STAFF_TYPE.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_TAMPER_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_TAMPER_STATE.java
new file mode 100644
index 0000000..1859ac3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_TAMPER_STATE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_VIDEO_COMPRESSION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_VIDEO_COMPRESSION.java
new file mode 100644
index 0000000..ca5d49a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_VIDEO_COMPRESSION.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_VS_DATA_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_VS_DATA_TYPE.java
new file mode 100644
index 0000000..ea4e9a3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_VS_DATA_TYPE.java
@@ -0,0 +1,48 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_VS_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_VS_TYPE.java
new file mode 100644
index 0000000..cfd5a77
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EM_VS_TYPE.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_ENUM_INPUT_CHANNEL_MEDIA.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_ENUM_INPUT_CHANNEL_MEDIA.java
new file mode 100644
index 0000000..f7cae37
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_ENUM_INPUT_CHANNEL_MEDIA.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EVENT_DEVICE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EVENT_DEVICE_TYPE.java
new file mode 100644
index 0000000..0d81c38
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EVENT_DEVICE_TYPE.java
@@ -0,0 +1,48 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EVENT_OPERATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EVENT_OPERATE_TYPE.java
new file mode 100644
index 0000000..9ac5e04
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EVENT_OPERATE_TYPE.java
@@ -0,0 +1,57 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EVENT_USER_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EVENT_USER_TYPE.java
new file mode 100644
index 0000000..cee8f31
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_EVENT_USER_TYPE.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_FLOWSTAT_DIRECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_FLOWSTAT_DIRECTION.java
new file mode 100644
index 0000000..cea0472
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_FLOWSTAT_DIRECTION.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_MONITORWALL_OPERATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_MONITORWALL_OPERATE_TYPE.java
new file mode 100644
index 0000000..e4edce8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_MONITORWALL_OPERATE_TYPE.java
@@ -0,0 +1,115 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_NOTIFY_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_NOTIFY_TYPE.java
new file mode 100644
index 0000000..7cbbc47
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_NOTIFY_TYPE.java
@@ -0,0 +1,60 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_RADIOMETRY_ALARMCONTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_RADIOMETRY_ALARMCONTION.java
new file mode 100644
index 0000000..4afd2ec
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_RADIOMETRY_ALARMCONTION.java
@@ -0,0 +1,60 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_RADIOMETRY_RESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_RADIOMETRY_RESULT.java
new file mode 100644
index 0000000..fe24de1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_RADIOMETRY_RESULT.java
@@ -0,0 +1,83 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_SENSE_METHOD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_SENSE_METHOD.java
new file mode 100644
index 0000000..0e48008
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_SENSE_METHOD.java
@@ -0,0 +1,274 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_SPLIT_OPERATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_SPLIT_OPERATE_TYPE.java
new file mode 100644
index 0000000..2fa2d10
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_SPLIT_OPERATE_TYPE.java
@@ -0,0 +1,169 @@
+package com.ruoyi.device.dhsdk.lib.enumeration;
+
+
+import com.ruoyi.device.dhsdk.lib.structure.NET_IN_SPLIT_SET_HIGHLIGHT;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_TRAFFIC_JAM_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_TRAFFIC_JAM_STATUS.java
new file mode 100644
index 0000000..8b03f8c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_TRAFFIC_JAM_STATUS.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_TRAFFIC_LIGHT_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_TRAFFIC_LIGHT_STATUS.java
new file mode 100644
index 0000000..5311cf2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_TRAFFIC_LIGHT_STATUS.java
@@ -0,0 +1,61 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_TRAFFIC_ROAD_RANK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_TRAFFIC_ROAD_RANK.java
new file mode 100644
index 0000000..54b5778
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_TRAFFIC_ROAD_RANK.java
@@ -0,0 +1,75 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_VOLUME_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_VOLUME_TYPE.java
new file mode 100644
index 0000000..dfcea13
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_VOLUME_TYPE.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_WIRELESSDEV_LOWPOWER_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_WIRELESSDEV_LOWPOWER_TYPE.java
new file mode 100644
index 0000000..a1334b7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_WIRELESSDEV_LOWPOWER_TYPE.java
@@ -0,0 +1,82 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_WIRELESS_DEVICE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_WIRELESS_DEVICE_TYPE.java
new file mode 100644
index 0000000..76bb831
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/NET_WIRELESS_DEVICE_TYPE.java
@@ -0,0 +1,80 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/REC_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/REC_TYPE.java
new file mode 100644
index 0000000..d8dad14
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/REC_TYPE.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/SNAP_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/SNAP_TYPE.java
new file mode 100644
index 0000000..cf62f61
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/SNAP_TYPE.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/STREAM_RATE_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/STREAM_RATE_TYPE.java
new file mode 100644
index 0000000..1cf7cf4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/STREAM_RATE_TYPE.java
@@ -0,0 +1,63 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/TALK_CODING_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/TALK_CODING_TYPE.java
new file mode 100644
index 0000000..1f0dc41
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/enumeration/TALK_CODING_TYPE.java
@@ -0,0 +1,69 @@
+package com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_AREAALARM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_AREAALARM_INFO.java
new file mode 100644
index 0000000..cb7729c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_AREAALARM_INFO.java
@@ -0,0 +1,47 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_DEFENCE_AREA_TYPE}
+*/
+public			int					emDefenceAreaType;
+/** 
+触发的通道号
+*/
+public			int					nIndex;
+/** 
+触发类型 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_AREAARM_MODECHANGE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_AREAARM_MODECHANGE_INFO.java
new file mode 100644
index 0000000..e4916e3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_AREAARM_MODECHANGE_INFO.java
@@ -0,0 +1,48 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_AREAARM_TRIGGERMODE}
+	 */
+	public int emTriggerMode;
+	/**
+	 * 操作用户,仅emTriggerMode = EM_AREAARM_USER_USER时有效
+	 * {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_AREAARM_USER}
+	 */
+	public int emUser;
+	/**
+	 * ID号,emTriggerMode = EM_AREAARM_TRIGGERMODE_KEYPAD 表示键盘地址;emTriggerMode
+	 * =EM_AREAARM_TRIGGERMODE_REMOTECONTROL时表示遥控器编号
+	 */
+	public int nID;
+	/**
+	 * 布撤防状态 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_AUDIO_ANOMALY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_AUDIO_ANOMALY.java
new file mode 100644
index 0000000..4fef07b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_AUDIO_ANOMALY.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_CITIZEN_PICTURE_COMPARE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_CITIZEN_PICTURE_COMPARE_INFO.java
new file mode 100644
index 0000000..dff249c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_CITIZEN_PICTURE_COMPARE_INFO.java
@@ -0,0 +1,123 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_CITIZENIDCARD_SEX_TYPE;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_COLDSPOT_WARNING_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_COLDSPOT_WARNING_INFO.java
new file mode 100644
index 0000000..46dde2c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_COLDSPOT_WARNING_INFO.java
@@ -0,0 +1,45 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_ENCLOSURE_INFO_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_ENCLOSURE_INFO_EX.java
new file mode 100644
index 0000000..0f812fa
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_ENCLOSURE_INFO_EX.java
@@ -0,0 +1,94 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * @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.ruoyi.device.dhsdk.lib.enumeration.EM_ENCLOSURE_TYPE_EX}
+	 */
+	public int emType;
+	/**
+	 * 返回详细类型个数
+	 */
+	public int nActionNum;
+	/**
+	 * 详细类型,参考枚举{@link com.ruoyi.device.dhsdk.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 byte[] szReserved = new byte[1024];
+
+	public ALARM_ENCLOSURE_INFO_EX() {
+	}
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_FIRE_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_FIRE_DETECTION_INFO.java
new file mode 100644
index 0000000..21b745a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_FIRE_DETECTION_INFO.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+/**
+ * @author 251823
+ * @description 火警事件 (DH_ALARM_FIRE_DETECTION)
+ * @date 2020/12/21
+ */
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_HEATIMG_TEMPER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_HEATIMG_TEMPER_INFO.java
new file mode 100644
index 0000000..51e08a0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_HEATIMG_TEMPER_INFO.java
@@ -0,0 +1,75 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.NET_RADIOMETRY_ALARMCONTION;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_HOTSPOT_WARNING_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_HOTSPOT_WARNING_INFO.java
new file mode 100644
index 0000000..030951d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_HOTSPOT_WARNING_INFO.java
@@ -0,0 +1,46 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_KEYPAD_LOCK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_KEYPAD_LOCK_INFO.java
new file mode 100644
index 0000000..5ced927
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_KEYPAD_LOCK_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_MAN_NUM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_MAN_NUM_INFO.java
new file mode 100644
index 0000000..3ba531b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_MAN_NUM_INFO.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.MAN_NUM_LIST_INFO;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_NO_DISK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_NO_DISK_INFO.java
new file mode 100644
index 0000000..c56e0bf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_NO_DISK_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RADAR_REGIONDETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RADAR_REGIONDETECTION_INFO.java
new file mode 100644
index 0000000..16130c7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RADAR_REGIONDETECTION_INFO.java
@@ -0,0 +1,132 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RAID_INFO_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RAID_INFO_EX.java
new file mode 100644
index 0000000..07cfea0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RAID_INFO_EX.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_REGION_PARKING_NO_ENTRY_RECORD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_REGION_PARKING_NO_ENTRY_RECORD_INFO.java
new file mode 100644
index 0000000..c64ad2f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_REGION_PARKING_NO_ENTRY_RECORD_INFO.java
@@ -0,0 +1,45 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_REGION_PARKING_TIMEOUT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_REGION_PARKING_TIMEOUT_INFO.java
new file mode 100644
index 0000000..e201b6a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_REGION_PARKING_TIMEOUT_INFO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RTSC_LAMP_RUNNING_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RTSC_LAMP_RUNNING_INFO.java
new file mode 100644
index 0000000..df2d168
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RTSC_LAMP_RUNNING_INFO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RTSC_PHASE_RUNNING_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RTSC_PHASE_RUNNING_INFO.java
new file mode 100644
index 0000000..c57ccb7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RTSC_PHASE_RUNNING_INFO.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RTSC_RUNNING_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RTSC_RUNNING_INFO.java
new file mode 100644
index 0000000..8c09550
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RTSC_RUNNING_INFO.java
@@ -0,0 +1,103 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RTSC_TRAFFIC_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RTSC_TRAFFIC_INFO.java
new file mode 100644
index 0000000..d574059
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_RTSC_TRAFFIC_INFO.java
@@ -0,0 +1,89 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.structure.TRAFFIC_EVENT;
+import com.ruoyi.device.dhsdk.lib.structure.TRAFFIC_INFO;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_SOLARCELL_SYSTEM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_SOLARCELL_SYSTEM_INFO.java
new file mode 100644
index 0000000..f289ebc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_SOLARCELL_SYSTEM_INFO.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_SOLARCELL_SYSTEM_FAULT_TYPE;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_STORAGE_IPC_FAILURE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_STORAGE_IPC_FAILURE_INFO.java
new file mode 100644
index 0000000..29deade
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_STORAGE_IPC_FAILURE_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFICSTROBESTATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFICSTROBESTATE_INFO.java
new file mode 100644
index 0000000..0a0bd7a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFICSTROBESTATE_INFO.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_JUNTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_JUNTION_INFO.java
new file mode 100644
index 0000000..62bf678
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_JUNTION_INFO.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Arrays;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_QUEUE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_QUEUE_INFO.java
new file mode 100644
index 0000000..c8a477f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_QUEUE_INFO.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Arrays;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_STAT_EX_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_STAT_EX_INFO.java
new file mode 100644
index 0000000..efc65e4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_STAT_EX_INFO.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Arrays;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_STAT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_STAT_INFO.java
new file mode 100644
index 0000000..5b815f4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_STAT_INFO.java
@@ -0,0 +1,96 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Arrays;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_VEHICLE_STOP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_VEHICLE_STOP_INFO.java
new file mode 100644
index 0000000..0815487
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_FLOW_VEHICLE_STOP_INFO.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Arrays;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_LIGHT_STATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_LIGHT_STATE_INFO.java
new file mode 100644
index 0000000..2b63e55
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_LIGHT_STATE_INFO.java
@@ -0,0 +1,81 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_VEHICLE_POSITION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_VEHICLE_POSITION.java
new file mode 100644
index 0000000..b7cdb88
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_TRAFFIC_VEHICLE_POSITION.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_VEHICLE_INOUT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_VEHICLE_INOUT_INFO.java
new file mode 100644
index 0000000..66a88a8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_VEHICLE_INOUT_INFO.java
@@ -0,0 +1,65 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_WIRELESSDEV_LOWPOWER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_WIRELESSDEV_LOWPOWER_INFO.java
new file mode 100644
index 0000000..5cdb32d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_WIRELESSDEV_LOWPOWER_INFO.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_WIRELESSDEV_POWERLESS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_WIRELESSDEV_POWERLESS_INFO.java
new file mode 100644
index 0000000..f6ee811
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_WIRELESSDEV_POWERLESS_INFO.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_WORKSUIT_FEATURE_ABSTRACT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_WORKSUIT_FEATURE_ABSTRACT_INFO.java
new file mode 100644
index 0000000..ffb5f28
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ALARM_WORKSUIT_FEATURE_ABSTRACT_INFO.java
@@ -0,0 +1,46 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ANATOMY_TEMP_DETECT_PERSON_FILTER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ANATOMY_TEMP_DETECT_PERSON_FILTER.java
new file mode 100644
index 0000000..ef8fa85
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ANATOMY_TEMP_DETECT_PERSON_FILTER.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ARM_FAILED_DETAIL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ARM_FAILED_DETAIL.java
new file mode 100644
index 0000000..2b69878
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ARM_FAILED_DETAIL.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ARM_FAILED_DETAIL_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ARM_FAILED_DETAIL_EX.java
new file mode 100644
index 0000000..420520f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ARM_FAILED_DETAIL_EX.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/AV_CFG_MONITOR_WALL_OUT_MODE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/AV_CFG_MONITOR_WALL_OUT_MODE_INFO.java
new file mode 100644
index 0000000..0d5df27
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/AV_CFG_MONITOR_WALL_OUT_MODE_INFO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/Auxs.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/Auxs.java
new file mode 100644
index 0000000..9ed1979
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/Auxs.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/BODY_TRAIT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/BODY_TRAIT.java
new file mode 100644
index 0000000..8464522
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/BODY_TRAIT.java
@@ -0,0 +1,92 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/BYTE_32.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/BYTE_32.java
new file mode 100644
index 0000000..d9197a1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/BYTE_32.java
@@ -0,0 +1,13 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/BYTE_40.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/BYTE_40.java
new file mode 100644
index 0000000..bee2567
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/BYTE_40.java
@@ -0,0 +1,13 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/BYTE_64.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/BYTE_64.java
new file mode 100644
index 0000000..39dc5d2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/BYTE_64.java
@@ -0,0 +1,14 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/Byte64Arr.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/Byte64Arr.java
new file mode 100644
index 0000000..43ec023
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/Byte64Arr.java
@@ -0,0 +1,13 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ByteSize16.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ByteSize16.java
new file mode 100644
index 0000000..ee1f3a6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ByteSize16.java
@@ -0,0 +1,13 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CAR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CAR_INFO.java
new file mode 100644
index 0000000..e018eb4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CAR_INFO.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ABLOCK_DOOR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ABLOCK_DOOR_INFO.java
new file mode 100644
index 0000000..4ba312d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ABLOCK_DOOR_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ABLOCK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ABLOCK_INFO.java
new file mode 100644
index 0000000..f9c3cb9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ABLOCK_INFO.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACCESS_CONTROL_ASG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACCESS_CONTROL_ASG.java
new file mode 100644
index 0000000..f82167e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACCESS_CONTROL_ASG.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.*;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 门通道控制闸机参数
+ * @date 2021/2/7
+ */
+public class CFG_ACCESS_CONTROL_ASG extends NetSDKLib.SdkStructure {
+  /** 通行模式,{@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACCESS_GENERAL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACCESS_GENERAL_INFO.java
new file mode 100644
index 0000000..e946049
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACCESS_GENERAL_INFO.java
@@ -0,0 +1,106 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+import static com.ruoyi.device.dhsdk.lib.constant.SDKStructureFieldLenth.MAX_ADDRESS_LEN;
+import static com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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[1024];		
+
+  @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACCESS_VOICE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACCESS_VOICE.java
new file mode 100644
index 0000000..61b0b59
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACCESS_VOICE.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACCESS_VOICE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACCESS_VOICE_INFO.java
new file mode 100644
index 0000000..bfc44d9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACCESS_VOICE_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.CFG_EM_ASG_VOICE_DIRECTION;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACTIVITY_ANALYSE_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACTIVITY_ANALYSE_CAPS.java
new file mode 100644
index 0000000..092f387
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ACTIVITY_ANALYSE_CAPS.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ALARM_SUBSYSTEM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ALARM_SUBSYSTEM_INFO.java
new file mode 100644
index 0000000..727aae0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ALARM_SUBSYSTEM_INFO.java
@@ -0,0 +1,62 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ALARM_SUBSYSTEM_MSG_HANDLE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ALARM_SUBSYSTEM_MSG_HANDLE.java
new file mode 100644
index 0000000..8e4bbf8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ALARM_SUBSYSTEM_MSG_HANDLE.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ANATOMYTEMP_DETECT_SCENE_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ANATOMYTEMP_DETECT_SCENE_CAPS.java
new file mode 100644
index 0000000..99cac3f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ANATOMYTEMP_DETECT_SCENE_CAPS.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ANATOMYTEMP_VISUAL_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ANATOMYTEMP_VISUAL_CAPS.java
new file mode 100644
index 0000000..c4c0761
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ANATOMYTEMP_VISUAL_CAPS.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AREA_MODE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AREA_MODE_INFO.java
new file mode 100644
index 0000000..aed1cfa
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AREA_MODE_INFO.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AUDIO_SPIRIT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AUDIO_SPIRIT.java
new file mode 100644
index 0000000..c0fe1e9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AUDIO_SPIRIT.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AUDIO_SPIRIT_CHANNEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AUDIO_SPIRIT_CHANNEL.java
new file mode 100644
index 0000000..14ab7db
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AUDIO_SPIRIT_CHANNEL.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AUDIO_SPIRIT_LINKAGE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AUDIO_SPIRIT_LINKAGE.java
new file mode 100644
index 0000000..aa0f89a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AUDIO_SPIRIT_LINKAGE.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AUTO_HOMING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AUTO_HOMING.java
new file mode 100644
index 0000000..fcc9891
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_AUTO_HOMING.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CALIBRATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CALIBRATE_INFO.java
new file mode 100644
index 0000000..e9934bb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CALIBRATE_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CALIBRATE_UNIT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CALIBRATE_UNIT_INFO.java
new file mode 100644
index 0000000..68895e7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CALIBRATE_UNIT_INFO.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CALIBRATE_UNIT_INFO_ARR.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CALIBRATE_UNIT_INFO_ARR.java
new file mode 100644
index 0000000..d563dea
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CALIBRATE_UNIT_INFO_ARR.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAMERA_OCCLUSION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAMERA_OCCLUSION.java
new file mode 100644
index 0000000..f9b1f78
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAMERA_OCCLUSION.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_ANALYSE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_ANALYSE_INFO.java
new file mode 100644
index 0000000..b1a92da
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_ANALYSE_INFO.java
@@ -0,0 +1,192 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_ANALYSE_INFO_OPT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_ANALYSE_INFO_OPT.java
new file mode 100644
index 0000000..11ba164
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_ANALYSE_INFO_OPT.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_ANALYSE_REQ_EXTEND_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_ANALYSE_REQ_EXTEND_INFO.java
new file mode 100644
index 0000000..fab206c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_ANALYSE_REQ_EXTEND_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_CELIBRATE_AREA.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_CELIBRATE_AREA.java
new file mode 100644
index 0000000..79cbe16
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_CELIBRATE_AREA.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_SCENE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_SCENE.java
new file mode 100644
index 0000000..53ec626
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CAP_SCENE.java
@@ -0,0 +1,268 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CHANNEL_TIME_SECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CHANNEL_TIME_SECTION.java
new file mode 100644
index 0000000..c9120ec
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CHANNEL_TIME_SECTION.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CHASSISINTRUSION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CHASSISINTRUSION_INFO.java
new file mode 100644
index 0000000..86769c6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CHASSISINTRUSION_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CROSSLINE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CROSSLINE_INFO.java
new file mode 100644
index 0000000..4602d0c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CROSSLINE_INFO.java
@@ -0,0 +1,141 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CROSSREGION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CROSSREGION_INFO.java
new file mode 100644
index 0000000..e6c9635
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_CROSSREGION_INFO.java
@@ -0,0 +1,173 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DETAIL_DRIVEASSISTANT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DETAIL_DRIVEASSISTANT_INFO.java
new file mode 100644
index 0000000..4c4e1ab
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DETAIL_DRIVEASSISTANT_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DETECT_REGION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DETECT_REGION.java
new file mode 100644
index 0000000..cf7c6d4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DETECT_REGION.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+/**
+ * @author 47081
+ * @desc
+ * @version 1.0.0
+ * @date 2021/4/9
+ */
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.lib.NetSDKLib.CFG_COMMON_STRING_64;
+import static com.ruoyi.device.dhsdk.lib.constant.SDKStructureFieldLenth.MAX_MOTION_COL;
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DETECT_REGIONS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DETECT_REGIONS_INFO.java
new file mode 100644
index 0000000..991fd8e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DETECT_REGIONS_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DEVLOCATION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DEVLOCATION_INFO.java
new file mode 100644
index 0000000..270074a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DEVLOCATION_INFO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DISTRACT_DRIVING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DISTRACT_DRIVING.java
new file mode 100644
index 0000000..9b2ac58
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DISTRACT_DRIVING.java
@@ -0,0 +1,47 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVEING_CALLING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVEING_CALLING.java
new file mode 100644
index 0000000..2526dec
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVEING_CALLING.java
@@ -0,0 +1,47 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVER_NOBELT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVER_NOBELT.java
new file mode 100644
index 0000000..15ce418
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVER_NOBELT.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVE_ACIONANAYLSE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVE_ACIONANAYLSE_INFO.java
new file mode 100644
index 0000000..8f18814
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVE_ACIONANAYLSE_INFO.java
@@ -0,0 +1,112 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVE_LEAVE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVE_LEAVE_INFO.java
new file mode 100644
index 0000000..cb017fd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVE_LEAVE_INFO.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVE_SMOKING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVE_SMOKING.java
new file mode 100644
index 0000000..fc00306
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_DRIVE_SMOKING.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ENCODECAP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ENCODECAP.java
new file mode 100644
index 0000000..434a252
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_ENCODECAP.java
@@ -0,0 +1,52 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.CFG_EM_PREVIEW_MODE;
+
+import static com.ruoyi.device.dhsdk.lib.constant.SDKStructureFieldLenth.CFG_MAX_PREVIEW_MODE_SPLIT_TYPE_NUM;
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_EXITMAN_STAY_STAT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_EXITMAN_STAY_STAT.java
new file mode 100644
index 0000000..2944213
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_EXITMAN_STAY_STAT.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_FATIGUE_DRIVING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_FATIGUE_DRIVING.java
new file mode 100644
index 0000000..f1dc309
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_FATIGUE_DRIVING.java
@@ -0,0 +1,47 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_GENEAL_ATTITUDE_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_GENEAL_ATTITUDE_CAPS.java
new file mode 100644
index 0000000..aca5b2d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_GENEAL_ATTITUDE_CAPS.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_HIGH_TOSS_DETECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_HIGH_TOSS_DETECT_INFO.java
new file mode 100644
index 0000000..eab6275
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_HIGH_TOSS_DETECT_INFO.java
@@ -0,0 +1,53 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.constant.SDKStructureFieldLenth;
+
+import static com.ruoyi.device.dhsdk.lib.NetSDKLib.MAX_NAME_LEN;
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_IDENTITY_ANOMALY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_IDENTITY_ANOMALY.java
new file mode 100644
index 0000000..7ab26c8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_IDENTITY_ANOMALY.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_INFRARED_BLOCKING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_INFRARED_BLOCKING.java
new file mode 100644
index 0000000..94013a3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_INFRARED_BLOCKING.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_INFRARED_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_INFRARED_INFO.java
new file mode 100644
index 0000000..e30e7ed
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_INFRARED_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_INFRARED_FUNC_MODE;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_INTELLI_SHELF_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_INTELLI_SHELF_INFO.java
new file mode 100644
index 0000000..d48d91d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_INTELLI_SHELF_INFO.java
@@ -0,0 +1,69 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_IVS_MAN_NUM_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_IVS_MAN_NUM_DETECTION_INFO.java
new file mode 100644
index 0000000..43d5c75
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_IVS_MAN_NUM_DETECTION_INFO.java
@@ -0,0 +1,109 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_LINK_CLASS_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_LINK_CLASS_TYPE.java
new file mode 100644
index 0000000..efec81c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_LINK_CLASS_TYPE.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_LOCATION_CALIBRATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_LOCATION_CALIBRATE_INFO.java
new file mode 100644
index 0000000..3c8f739
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_LOCATION_CALIBRATE_INFO.java
@@ -0,0 +1,53 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_LOCATION_CALIBRATE_POINT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_LOCATION_CALIBRATE_POINT_INFO.java
new file mode 100644
index 0000000..b40ea8d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_LOCATION_CALIBRATE_POINT_INFO.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_MANNUMDETECTION_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_MANNUMDETECTION_RULE_INFO.java
new file mode 100644
index 0000000..b514fa9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_MANNUMDETECTION_RULE_INFO.java
@@ -0,0 +1,16 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 区域内人数统计
+ * @date 2021/01/11
+ */
+public class CFG_MANNUMDETECTION_RULE_INFO extends NetSDKLib.SdkStructure{
+	/**
+	 * 支持规则的最大个数
+	 */
+	public int nMaxRules;
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_MOTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_MOTION_INFO.java
new file mode 100644
index 0000000..de8d18f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_MOTION_INFO.java
@@ -0,0 +1,125 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+/**
+ * @author 47081
+ * @desc
+ * @version 1.0.0
+ * @date 2021/4/9
+ */
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.sun.jna.ptr.IntByReference;
+
+import java.util.Arrays;
+
+import static com.ruoyi.device.dhsdk.lib.NetSDKLib.MAX_REC_TSECT;
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_MOTION_WINDOW.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_MOTION_WINDOW.java
new file mode 100644
index 0000000..1bfb5e2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_MOTION_WINDOW.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+/**
+ * @author 47081
+ * @desc
+ * @version 1.0.0
+ * @date 2021/4/9
+ */
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NAS_GROUP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NAS_GROUP_INFO.java
new file mode 100644
index 0000000..9d7d04d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NAS_GROUP_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NAS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NAS_INFO.java
new file mode 100644
index 0000000..483df97
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NAS_INFO.java
@@ -0,0 +1,65 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NAS_INFO_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NAS_INFO_EX.java
new file mode 100644
index 0000000..2e41f0a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NAS_INFO_EX.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NAS_INFO_NEW.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NAS_INFO_NEW.java
new file mode 100644
index 0000000..0c8235a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NAS_INFO_NEW.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NETAPP_WLAN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NETAPP_WLAN.java
new file mode 100644
index 0000000..33fde24
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NETAPP_WLAN.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NETWORK_BOND_INTERFACE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NETWORK_BOND_INTERFACE.java
new file mode 100644
index 0000000..53339a9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NETWORK_BOND_INTERFACE.java
@@ -0,0 +1,37 @@
+ package com.ruoyi.device.dhsdk.lib.structure;
+
+
+ import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NETWORK_BR_INTERFACE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NETWORK_BR_INTERFACE.java
new file mode 100644
index 0000000..1867369
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NETWORK_BR_INTERFACE.java
@@ -0,0 +1,31 @@
+ package com.ruoyi.device.dhsdk.lib.structure;
+ import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NET_TIME.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NET_TIME.java
new file mode 100644
index 0000000..43c3704
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NET_TIME.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NET_TIME_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NET_TIME_EX.java
new file mode 100644
index 0000000..6347e5a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NET_TIME_EX.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NUMBERSTAT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NUMBERSTAT_INFO.java
new file mode 100644
index 0000000..562c2b2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NUMBERSTAT_INFO.java
@@ -0,0 +1,133 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NUMBERSTAT_MULT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NUMBERSTAT_MULT_INFO.java
new file mode 100644
index 0000000..1f4ad87
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NUMBERSTAT_MULT_INFO.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NUMBERSTAT_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NUMBERSTAT_RULE_INFO.java
new file mode 100644
index 0000000..b79c870
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NUMBERSTAT_RULE_INFO.java
@@ -0,0 +1,16 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 客流量统计
+ * @date 2021/01/11
+ */
+public class CFG_NUMBERSTAT_RULE_INFO extends NetSDKLib.SdkStructure{
+	/**
+	 * 支持规则的最大个数
+	 */
+	public int nMaxRules;
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NUMBER_STAT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NUMBER_STAT_INFO.java
new file mode 100644
index 0000000..898b4a9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_NUMBER_STAT_INFO.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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;
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PARKING_STATISTICS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PARKING_STATISTICS_INFO.java
new file mode 100644
index 0000000..fb38707
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PARKING_STATISTICS_INFO.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PIG_STAY_STAT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PIG_STAY_STAT.java
new file mode 100644
index 0000000..0c8c92c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PIG_STAY_STAT.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PORTRAIT_DETECTION_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PORTRAIT_DETECTION_CAPS.java
new file mode 100644
index 0000000..79c8b7b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PORTRAIT_DETECTION_CAPS.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PRIVACY_MASKING_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PRIVACY_MASKING_INFO.java
new file mode 100644
index 0000000..f7afcc6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PRIVACY_MASKING_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PROFILE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PROFILE_INFO.java
new file mode 100644
index 0000000..77955b0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PROFILE_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_ABSOLUTELY_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_ABSOLUTELY_CAPS.java
new file mode 100644
index 0000000..8194d94
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_ABSOLUTELY_CAPS.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.Utils;
+
+import java.util.Arrays;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_ACTION_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_ACTION_CAPS.java
new file mode 100644
index 0000000..980b11d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_ACTION_CAPS.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_ALL_AUTOMOVE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_ALL_AUTOMOVE_INFO.java
new file mode 100644
index 0000000..edb6ada
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_ALL_AUTOMOVE_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_AREA_SCAN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_AREA_SCAN.java
new file mode 100644
index 0000000..4241a7b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_AREA_SCAN.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_AUTOMOVE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_AUTOMOVE_INFO.java
new file mode 100644
index 0000000..3afe21b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_AUTOMOVE_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_CONTINUOUSLY_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_CONTINUOUSLY_TYPE.java
new file mode 100644
index 0000000..0656772
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_CONTINUOUSLY_TYPE.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_LIGHTING_CONTROL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_LIGHTING_CONTROL.java
new file mode 100644
index 0000000..a5f1efc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_LIGHTING_CONTROL.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_MEASURE_DISTANCE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_MEASURE_DISTANCE.java
new file mode 100644
index 0000000..795abf3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_MEASURE_DISTANCE.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_MOTION_RANGE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_MOTION_RANGE.java
new file mode 100644
index 0000000..14ac9ab
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_MOTION_RANGE.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_MOVE_ABSOLUTELY_CAP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_MOVE_ABSOLUTELY_CAP.java
new file mode 100644
index 0000000..3b173d0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_MOVE_ABSOLUTELY_CAP.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_MOVE_CONTINUOUSLY_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_MOVE_CONTINUOUSLY_CAPS.java
new file mode 100644
index 0000000..cadb4e4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_MOVE_CONTINUOUSLY_CAPS.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_PER_AUTOMOVE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_PER_AUTOMOVE_INFO.java
new file mode 100644
index 0000000..4ba9aec
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_PER_AUTOMOVE_INFO.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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;
+
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_PRIVACY_MASKING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_PRIVACY_MASKING.java
new file mode 100644
index 0000000..98ed9a1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_PRIVACY_MASKING.java
@@ -0,0 +1,62 @@
+package com.ruoyi.device.dhsdk.lib.structure;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.lib.constant.SDKStructureFieldLenth.MAX_MASKTYPE_COUNT;
+import static com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.NET_EM_MOSAIC_TYPE}
+     */
+    public int[] emMosaicType = new int[MAX_MOSAICTYPE_COUNT];
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_PROTOCOL_CAPS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_PROTOCOL_CAPS_INFO.java
new file mode 100644
index 0000000..4f60cd5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_PTZ_PROTOCOL_CAPS_INFO.java
@@ -0,0 +1,317 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.lib.NetSDKLib.CFG_COMMON_STRING_32;
+import static com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_QUEUEDETECTION_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_QUEUEDETECTION_RULE_INFO.java
new file mode 100644
index 0000000..228bc75
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_QUEUEDETECTION_RULE_INFO.java
@@ -0,0 +1,15 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 排队检测
+ * @date 2021/01/11
+ */
+public class CFG_QUEUEDETECTION_RULE_INFO  extends NetSDKLib.SdkStructure{
+	/**
+	 * 支持规则的最大个数
+	 */
+	public int nMaxRules;
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_RADIOMETRY_RULE_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_RADIOMETRY_RULE_EX.java
new file mode 100644
index 0000000..73ccb14
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_RADIOMETRY_RULE_EX.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_RAINBRUSH_TOUR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_RAINBRUSH_TOUR_INFO.java
new file mode 100644
index 0000000..73c7581
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_RAINBRUSH_TOUR_INFO.java
@@ -0,0 +1,15 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_REGULATOR_DETECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_REGULATOR_DETECT_INFO.java
new file mode 100644
index 0000000..aa1c0de
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_REGULATOR_DETECT_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_RTSP_INFO_IN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_RTSP_INFO_IN.java
new file mode 100644
index 0000000..6fccca2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_RTSP_INFO_IN.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_RTSP_INFO_OUT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_RTSP_INFO_OUT.java
new file mode 100644
index 0000000..4c78866
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_RTSP_INFO_OUT.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SCENE_MODE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SCENE_MODE_INFO.java
new file mode 100644
index 0000000..f5a59a1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SCENE_MODE_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SPACE_MODE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SPACE_MODE_INFO.java
new file mode 100644
index 0000000..2ae37b6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SPACE_MODE_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_STEREO_BEHAVIOR_SCENE_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_STEREO_BEHAVIOR_SCENE_CAPS.java
new file mode 100644
index 0000000..5d273e0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_STEREO_BEHAVIOR_SCENE_CAPS.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SUBSTITUTION_DRIVING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SUBSTITUTION_DRIVING.java
new file mode 100644
index 0000000..612e284
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SUBSTITUTION_DRIVING.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SUPPORTED_COMP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SUPPORTED_COMP.java
new file mode 100644
index 0000000..9569e2d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SUPPORTED_COMP.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SUPPORTED_RULES_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SUPPORTED_RULES_INFO.java
new file mode 100644
index 0000000..a8d24f2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SUPPORTED_RULES_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SUPPORT_SCHEDULE_REPORT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SUPPORT_SCHEDULE_REPORT.java
new file mode 100644
index 0000000..268bd29
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_SUPPORT_SCHEDULE_REPORT.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_THERMO_GAIN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_THERMO_GAIN.java
new file mode 100644
index 0000000..c11e142
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_THERMO_GAIN.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_TRAFFIC_OVERSPEED_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_TRAFFIC_OVERSPEED_INFO.java
new file mode 100644
index 0000000..0281bf6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_TRAFFIC_OVERSPEED_INFO.java
@@ -0,0 +1,125 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_TRAFFIC_UNDERSPEED_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_TRAFFIC_UNDERSPEED_INFO.java
new file mode 100644
index 0000000..b375da2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_TRAFFIC_UNDERSPEED_INFO.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VACAP_SUPPORTEDSCENES.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VACAP_SUPPORTEDSCENES.java
new file mode 100644
index 0000000..4df1dd6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VACAP_SUPPORTEDSCENES.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEOSATA_SUMMARY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEOSATA_SUMMARY_INFO.java
new file mode 100644
index 0000000..2e49948
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEOSATA_SUMMARY_INFO.java
@@ -0,0 +1,171 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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;
+
+	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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_ALGORITHMTYPE_ALGORITHM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_ALGORITHMTYPE_ALGORITHM.java
new file mode 100644
index 0000000..a3e5c0d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_ALGORITHMTYPE_ALGORITHM.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_ALGORITHMTYPE_DETECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_ALGORITHMTYPE_DETECTION.java
new file mode 100644
index 0000000..00859aa
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_ALGORITHMTYPE_DETECTION.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_AVAILABILITY_DETECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_AVAILABILITY_DETECTION.java
new file mode 100644
index 0000000..b1beb5b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_AVAILABILITY_DETECTION.java
@@ -0,0 +1,14 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_ENCODECAP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_ENCODECAP.java
new file mode 100644
index 0000000..192358f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_ENCODECAP.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_FILCKERING_DETECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_FILCKERING_DETECTION.java
new file mode 100644
index 0000000..3ddf5d8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_FILCKERING_DETECTION.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_IN_FOCUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_IN_FOCUS.java
new file mode 100644
index 0000000..45b376e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_IN_FOCUS.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_IN_FOCUS_UNIT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_IN_FOCUS_UNIT.java
new file mode 100644
index 0000000..e8667be
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_IN_FOCUS_UNIT.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_LOSS_FRAME_DETECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_LOSS_FRAME_DETECTION.java
new file mode 100644
index 0000000..5ae57d9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_LOSS_FRAME_DETECTION.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_SNOWFLAKE_DETECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_SNOWFLAKE_DETECTION.java
new file mode 100644
index 0000000..47fc950
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VIDEO_SNOWFLAKE_DETECTION.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VOICE_PLAY_PLAN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VOICE_PLAY_PLAN.java
new file mode 100644
index 0000000..c8a05ad
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VOICE_PLAY_PLAN.java
@@ -0,0 +1,16 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VSP_GAYS_ALARM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VSP_GAYS_ALARM_INFO.java
new file mode 100644
index 0000000..79dc978
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VSP_GAYS_ALARM_INFO.java
@@ -0,0 +1,13 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VSP_GAYS_CHANNEL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VSP_GAYS_CHANNEL_INFO.java
new file mode 100644
index 0000000..05e854c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VSP_GAYS_CHANNEL_INFO.java
@@ -0,0 +1,13 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VSP_GAYS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VSP_GAYS_INFO.java
new file mode 100644
index 0000000..c114776
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_VSP_GAYS_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_WIRELESS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_WIRELESS_INFO.java
new file mode 100644
index 0000000..0492019
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_WIRELESS_INFO.java
@@ -0,0 +1,89 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_CFG_APN}
+	 */
+	public int emAPN;
+	/**
+	 * 用户名
+	 */
+	public byte[] szUseName = new byte[64];
+	/**
+	 * 密码
+	 */
+	public byte[] szPassword = new byte[64];
+	/**
+	 * 每日流量控制策略 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_CFG_DAY3GFLUXTACTIC}
+	 */
+	public int emDay3GFluxTactic;
+	/**
+	 * 每日流量使用上限, MB或者分钟
+	 */
+	public int dwDay3GFluxUp;
+	/**
+	 * 当日的已用流量, MB或者分钟
+	 */
+	public int dwDay3GFluxUse;
+	/**
+	 * 流量报警策略 {@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_CFG_AUTHMODE}
+	 */
+	public int emAuthMode;
+	/**
+	 * 接入网络名
+	 */
+	public byte[] szAPNName = new byte[32];
+	/**
+	 * 实际使用流量, [0,65535]MB或者分钟
+	 */
+	public int n3GFlux;
+	/**
+	 * 流量使用策略{@link com.ruoyi.device.dhsdk.lib.enumeration.EM_CFG_3GFLUXTACTIC}
+	 */
+	public int em3GFluxTactic;
+	/**
+	 * 流量使用上限
+	 */
+	public int n3GFluxUp;
+	/**
+	 * 工作模式选择 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_WLAN_EAP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_WLAN_EAP.java
new file mode 100644
index 0000000..3b17a9b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_WLAN_EAP.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_CFG_EAP_METHOD}
+	 */
+	public int emMethod;
+	/**
+	 * EAP身份验证方法 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_WLAN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_WLAN_INFO.java
new file mode 100644
index 0000000..4f8194d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_WLAN_INFO.java
@@ -0,0 +1,95 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_CFG_WIRELESS_AUTHENTICATION}
+	 */
+	public int emAuthentication;
+	/**
+	 * 数据加密方式, 暂时没用 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_WLAN_NETWORK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_WLAN_NETWORK.java
new file mode 100644
index 0000000..f84179e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CFG_WLAN_NETWORK.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CGF_MASKING_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CGF_MASKING_INFO.java
new file mode 100644
index 0000000..2335b4e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CGF_MASKING_INFO.java
@@ -0,0 +1,61 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CROWD_CALIBRATION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CROWD_CALIBRATION.java
new file mode 100644
index 0000000..d2c3a82
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CROWD_CALIBRATION.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX.java
new file mode 100644
index 0000000..b7e8930
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX_IN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX_IN.java
new file mode 100644
index 0000000..b129425
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX_IN.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.NetSDKLib.NET_ALARM_MODE}
+     */
+    public int emState;
+    
+    /**
+     * 用户密码
+     */
+    public Pointer szDevPwd;
+        
+    /**
+     * 情景模式,参考枚举 { @link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX_OUT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX_OUT.java
new file mode 100644
index 0000000..c8061b0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX_OUT.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CTRL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CTRL_INFO.java
new file mode 100644
index 0000000..95ff7de
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CTRL_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CUR_STEP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CUR_STEP_INFO.java
new file mode 100644
index 0000000..312bea0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CUR_STEP_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CUSTOM_PERSON_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CUSTOM_PERSON_INFO.java
new file mode 100644
index 0000000..75ae94f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/CUSTOM_PERSON_INFO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_ACCESS_CTL_IMAGE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_ACCESS_CTL_IMAGE_INFO.java
new file mode 100644
index 0000000..d7e7cc3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_ACCESS_CTL_IMAGE_INFO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description 图片信息
+* @date 2022/03/07 11:45:31
+*/
+public class DEV_ACCESS_CTL_IMAGE_INFO extends NetSDKLib.SdkStructure {
+/** 
+图片类型  {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_DAHUA_RADAR_CONFIG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_DAHUA_RADAR_CONFIG.java
new file mode 100644
index 0000000..1d023df
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_DAHUA_RADAR_CONFIG.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_ENCODER_CFG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_ENCODER_CFG.java
new file mode 100644
index 0000000..c7a8d39
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_ENCODER_CFG.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_ENCODER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_ENCODER_INFO.java
new file mode 100644
index 0000000..856f183
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_ENCODER_INFO.java
@@ -0,0 +1,138 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_ALARM_ANALOGALRM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_ALARM_ANALOGALRM_INFO.java
new file mode 100644
index 0000000..1c25654
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_ALARM_ANALOGALRM_INFO.java
@@ -0,0 +1,85 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_ANIMAL_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_ANIMAL_DETECTION_INFO.java
new file mode 100644
index 0000000..3d4941d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_ANIMAL_DETECTION_INFO.java
@@ -0,0 +1,85 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_ANYTHING_DETECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_ANYTHING_DETECT_INFO.java
new file mode 100644
index 0000000..2698121
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_ANYTHING_DETECT_INFO.java
@@ -0,0 +1,82 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_BARELAND_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_BARELAND_DETECTION_INFO.java
new file mode 100644
index 0000000..5749b1e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_BARELAND_DETECTION_INFO.java
@@ -0,0 +1,75 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_BREAK_RULE_BUILDIING_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_BREAK_RULE_BUILDIING_DETECTION_INFO.java
new file mode 100644
index 0000000..fea4454
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_BREAK_RULE_BUILDIING_DETECTION_INFO.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_BREED_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_BREED_DETECTION_INFO.java
new file mode 100644
index 0000000..a18626a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_BREED_DETECTION_INFO.java
@@ -0,0 +1,76 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CAR_DRIVING_IN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CAR_DRIVING_IN_INFO.java
new file mode 100644
index 0000000..eb53adb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CAR_DRIVING_IN_INFO.java
@@ -0,0 +1,88 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_CAPTURE_PROCESS_END_TYPE;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CAR_DRIVING_IN_OUT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CAR_DRIVING_IN_OUT_INFO.java
new file mode 100644
index 0000000..e30eca8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CAR_DRIVING_IN_OUT_INFO.java
@@ -0,0 +1,79 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CAR_DRIVING_OUT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CAR_DRIVING_OUT_INFO.java
new file mode 100644
index 0000000..1fa2be8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CAR_DRIVING_OUT_INFO.java
@@ -0,0 +1,90 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_CAPTURE_PROCESS_END_TYPE;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CONSUMPTION_EVENT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CONSUMPTION_EVENT_INFO.java
new file mode 100644
index 0000000..19e5310
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CONSUMPTION_EVENT_INFO.java
@@ -0,0 +1,169 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.NetSDKLib.NET_ACCESS_CTL_EVENT_TYPE }
+*/
+public			int					emType;
+/** 
+消费结果   {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_CONSUMPTION_STATUS }
+*/
+public			int					emStatus;
+/** 
+卡类型  {@link com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_ACCESSCTLCARD_TYPE }
+*/
+public			int					emCardType;
+/** 
+用户类型  {@link com.ruoyi.device.dhsdk.lib.NetSDKLib.EM_USER_TYPE }
+*/
+public			int					emUserType;
+/** 
+卡状态   {@link com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_ACCESSCTLCARD_STATE }
+*/
+public			int					emCardStatus;
+/** 
+开门方式      {@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CROSSLINE_INFO_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CROSSLINE_INFO_EX.java
new file mode 100644
index 0000000..7dac8eb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_CROSSLINE_INFO_EX.java
@@ -0,0 +1,187 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_DENSITYDETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_DENSITYDETECTION_INFO.java
new file mode 100644
index 0000000..d98c573
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_DENSITYDETECTION_INFO.java
@@ -0,0 +1,59 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.DH_MSG_OBJECT;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.DH_POINT;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.EVENT_INTELLI_COMM_INFO;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_EVENT_FILE_INFO;
+
+/**
+ * 事件类型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 DH_POINT[] DetectRegion = (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;
+  /** 保留字节,留待扩展. */
+  public byte[] bReserved = new byte[612];
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_DIALRECOGNITION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_DIALRECOGNITION_INFO.java
new file mode 100644
index 0000000..ad920ef
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_DIALRECOGNITION_INFO.java
@@ -0,0 +1,82 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_DISTANCE_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_DISTANCE_DETECTION_INFO.java
new file mode 100644
index 0000000..c2bbb08
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_DISTANCE_DETECTION_INFO.java
@@ -0,0 +1,87 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_DREGS_UNCOVERED_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_DREGS_UNCOVERED_INFO.java
new file mode 100644
index 0000000..e4ded88
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_DREGS_UNCOVERED_INFO.java
@@ -0,0 +1,59 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_ELECTRICFAULTDETECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_ELECTRICFAULTDETECT_INFO.java
new file mode 100644
index 0000000..19203af
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_ELECTRICFAULTDETECT_INFO.java
@@ -0,0 +1,188 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  仪表类缺陷检测事件 
+* @date 2022/06/28 19:44:57
+*/
+public class DEV_EVENT_ELECTRICFAULTDETECT_INFO extends NetSDKLib.SdkStructure {
+/** 
+智能事件所属大类 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FACEBODY_ANALYSE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FACEBODY_ANALYSE_INFO.java
new file mode 100644
index 0000000..30b9669
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FACEBODY_ANALYSE_INFO.java
@@ -0,0 +1,65 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FACEBODY_DETECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FACEBODY_DETECT_INFO.java
new file mode 100644
index 0000000..2005680
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FACEBODY_DETECT_INFO.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+/**
+ * @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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FACERECOGNITION_INFO_V1.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FACERECOGNITION_INFO_V1.java
new file mode 100644
index 0000000..c4964bc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FACERECOGNITION_INFO_V1.java
@@ -0,0 +1,65 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.EVENT_INTELLI_COMM_INFO;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_FACE_DATA;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_FEATURE_VECTOR;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_GPS_INFO;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_MSG_OBJECT;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_PASSERBY_INFO;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_PIC_INFO;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_TIME_EX;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SCENE_IMAGE_INFO;
+import com.ruoyi.device.dhsdk.lib.structure.NET_CUSTOM_PROJECTS_INFO;
+import com.ruoyi.device.dhsdk.lib.structure.NET_IMAGE_INFO_EX2;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FIRE_EXTINGUISHER_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FIRE_EXTINGUISHER_DETECTION_INFO.java
new file mode 100644
index 0000000..751411d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FIRE_EXTINGUISHER_DETECTION_INFO.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FIRE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FIRE_INFO.java
new file mode 100644
index 0000000..e783254
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FIRE_INFO.java
@@ -0,0 +1,139 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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; 
+	/**
+	 * 标记抓拍帧
+	 * */
+	public int nMark; 
+	/**
+	 * 视频分析的数据源地址
+	 * */
+	public int nSource;
+	/**
+	 * 视频分析帧序号
+	 * */
+	public int nFrameSequence; 
+	/**
+	 * 抓拍过程,参考EM_CAPTURE_PROCESS_END_TYPE 
+	 * */
+	public int emCaptureProcess; 
+	/**
+	 * 交通车辆信息
+	 * */
+	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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FIRE_LANE_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FIRE_LANE_DETECTION_INFO.java
new file mode 100644
index 0000000..556a9e2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FIRE_LANE_DETECTION_INFO.java
@@ -0,0 +1,117 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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;
+
+    /**
+     *  表示加油口盖标示牌状态
+     */
+    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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FISHING_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FISHING_DETECTION_INFO.java
new file mode 100644
index 0000000..34651d9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FISHING_DETECTION_INFO.java
@@ -0,0 +1,91 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FOLLOW_CAR_ALARM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FOLLOW_CAR_ALARM_INFO.java
new file mode 100644
index 0000000..a7e1048
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_FOLLOW_CAR_ALARM_INFO.java
@@ -0,0 +1,57 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_GENEAL_ATTITUDE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_GENEAL_ATTITUDE_INFO.java
new file mode 100644
index 0000000..69f3363
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_GENEAL_ATTITUDE_INFO.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型EVENT_IVS_GENEAL_ATTITUDE (通用姿态行为事件)对应的数据块描述信息 
+* @date 2023/02/06 15:24:00
+*/
+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.NET_MSG_OBJECT[]					stuObjects=new NetSDKLib.NET_MSG_OBJECT[128];
+/** 
+全景广角图
+*/
+public NetSDKLib.SCENE_IMAGE_INFO stuSceneImage=new NetSDKLib.SCENE_IMAGE_INFO();
+/** 
+姿态类型 {@link com.ruoyi.device.dhsdk.lib.enumeration.NET_EM_ATTITUDE_TYPE}
+*/
+public			int					emAttitudeType;
+/** 
+智能事件规则编号
+*/
+public			int					nRuleID;
+/** 
+保留字节,留待扩展
+*/
+public			byte[]					szReserved=new byte[1020];
+
+public DEV_EVENT_GENEAL_ATTITUDE_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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_HEAT_IMAGING_TEMPER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_HEAT_IMAGING_TEMPER_INFO.java
new file mode 100644
index 0000000..5e176c4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_HEAT_IMAGING_TEMPER_INFO.java
@@ -0,0 +1,77 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.NET_RADIOMETRY_RESULT}
+	 */
+	public int emResult;
+	/**
+	 * 报警条件 {@link com.ruoyi.device.dhsdk.lib.enumeration.NET_RADIOMETRY_ALARMCONTION}
+	 */
+	public int emAlarmContion;
+	/**
+	 * 报警温度值
+	 */
+	public float fTemperatureValue;
+	/**
+	 * 温度单位(当前配置的温度单位) {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_HELMET_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_HELMET_DETECTION_INFO.java
new file mode 100644
index 0000000..b98ecc5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_HELMET_DETECTION_INFO.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_HUDDLE_MATERIAL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_HUDDLE_MATERIAL_INFO.java
new file mode 100644
index 0000000..801f87a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_HUDDLE_MATERIAL_INFO.java
@@ -0,0 +1,106 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.EVENT_INTELLI_COMM_INFO;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_MSG_OBJECT;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_POINT;
+
+/**
+ * @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;
+
+	/**
+	 * 保留字节,留待扩展
+	 */
+	public byte[] byReserved = new byte[4092];
+
+	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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_HUMAN_ANIMAL_COEXISTENCE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_HUMAN_ANIMAL_COEXISTENCE_INFO.java
new file mode 100644
index 0000000..600f565
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_HUMAN_ANIMAL_COEXISTENCE_INFO.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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;
+	/**
+	 * 智能事件所属大类 {@link com.ruoyi.device.dhsdk.lib.enumeration.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.ruoyi.device.dhsdk.lib.enumeration.EM_HUMAN_ANIMAL_ALARM_TYPE}
+	 */
+	public int emAlarmType;
+	/**
+	 * 场景类型 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_INTELLI_SHELF_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_INTELLI_SHELF_INFO.java
new file mode 100644
index 0000000..e166f89
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_INTELLI_SHELF_INFO.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_NONMOTOR_ENTRYING_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_NONMOTOR_ENTRYING_INFO.java
new file mode 100644
index 0000000..0a1a96e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_NONMOTOR_ENTRYING_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_NUMBERSTAT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_NUMBERSTAT_INFO.java
new file mode 100644
index 0000000..8f531e4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_NUMBERSTAT_INFO.java
@@ -0,0 +1,116 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OBJECT_ABNORMAL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OBJECT_ABNORMAL_INFO.java
new file mode 100644
index 0000000..5c9ca95
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OBJECT_ABNORMAL_INFO.java
@@ -0,0 +1,77 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_ABNORMAL_OBJECT_TYPE}
+	 */
+	public int emObjectType;
+	/**
+	 * 异常行为 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OBJECT_NUM_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OBJECT_NUM_DETECTION_INFO.java
new file mode 100644
index 0000000..8ad457d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OBJECT_NUM_DETECTION_INFO.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OBJECT_PLACEMENT_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OBJECT_PLACEMENT_DETECTION_INFO.java
new file mode 100644
index 0000000..81ee409
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OBJECT_PLACEMENT_DETECTION_INFO.java
@@ -0,0 +1,90 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 291189
+ * @description 事件类型 EVENT_IVS_OBJECT_PLACEMENT_DETECTION(物品放置检测事件) 对应数据
+ * @date 2022/04/07 19:18:24
+ */
+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.ruoyi.device.dhsdk.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 = (NetSDKLib.NET_MSG_OBJECT_EX2[]) new NetSDKLib.NET_MSG_OBJECT_EX2()
+			.toArray(128);
+	/**
+	 * 图片信息数组 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];
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OBJECT_REMOVAL_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OBJECT_REMOVAL_DETECTION_INFO.java
new file mode 100644
index 0000000..ded4b12
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OBJECT_REMOVAL_DETECTION_INFO.java
@@ -0,0 +1,90 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 291189
+ * @description 事件类型 EVENT_IVS_OBJECT_REMOVAL_DETECTION(物品拿取检测事件) 对应数据
+ * @date 2022/04/07 18:57:51
+ */
+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.ruoyi.device.dhsdk.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 = (NetSDKLib.NET_MSG_OBJECT_EX2[]) new NetSDKLib.NET_MSG_OBJECT_EX2()
+			.toArray(128);
+	/**
+	 * 图片信息数组 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];
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OPEN_INTELLI_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OPEN_INTELLI_INFO.java
new file mode 100644
index 0000000..55e46ce
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OPEN_INTELLI_INFO.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OUTDOOR_ADVERTISEMENT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OUTDOOR_ADVERTISEMENT_INFO.java
new file mode 100644
index 0000000..1ba5166
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_OUTDOOR_ADVERTISEMENT_INFO.java
@@ -0,0 +1,106 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.EVENT_INTELLI_COMM_INFO;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_MSG_OBJECT;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_PARKINGSPACE_MANUALSNAP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_PARKINGSPACE_MANUALSNAP_INFO.java
new file mode 100644
index 0000000..0ea3ff2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_PARKINGSPACE_MANUALSNAP_INFO.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_PARKING_LOT_STATUS_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_PARKING_LOT_STATUS_DETECTION_INFO.java
new file mode 100644
index 0000000..9a2ae00
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_PARKING_LOT_STATUS_DETECTION_INFO.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_PLAY_MOBILEPHONE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_PLAY_MOBILEPHONE_INFO.java
new file mode 100644
index 0000000..1638910
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_PLAY_MOBILEPHONE_INFO.java
@@ -0,0 +1,133 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_PRESERVATION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_PRESERVATION_INFO.java
new file mode 100644
index 0000000..9c3583a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_PRESERVATION_INFO.java
@@ -0,0 +1,100 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_QSYTRAFFICCARWEIGHT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_QSYTRAFFICCARWEIGHT_INFO.java
new file mode 100644
index 0000000..8d9c851
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_QSYTRAFFICCARWEIGHT_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_RADAR_REGION_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_RADAR_REGION_DETECTION_INFO.java
new file mode 100644
index 0000000..f4e1e39
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_RADAR_REGION_DETECTION_INFO.java
@@ -0,0 +1,159 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_RIDING_MOTOR_CYCLE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_RIDING_MOTOR_CYCLE_INFO.java
new file mode 100644
index 0000000..f067d05
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_RIDING_MOTOR_CYCLE_INFO.java
@@ -0,0 +1,84 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SECURITYGATE_PERSONALARM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SECURITYGATE_PERSONALARM_INFO.java
new file mode 100644
index 0000000..3cd13a7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SECURITYGATE_PERSONALARM_INFO.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_SECURITYGATE_PERSON_PASS_DIRECTION }
+	 */
+	public int emDirection; // 人员通过方向
+
+	/**
+	 * 报警级别,参考枚举{@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SEWAGE_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SEWAGE_DETECTION_INFO.java
new file mode 100644
index 0000000..bf701ef
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SEWAGE_DETECTION_INFO.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SHOP_SIGN_ABNORMAL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SHOP_SIGN_ABNORMAL_INFO.java
new file mode 100644
index 0000000..31c69eb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SHOP_SIGN_ABNORMAL_INFO.java
@@ -0,0 +1,94 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.lib.constant.SDKStructureFieldLenth.DH_MAX_DETECT_REGION_NUM;
+import static com.ruoyi.device.dhsdk.lib.constant.SDKStructureFieldLenth.HDBJ_MAX_OBJECTS_NUM;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 事件类型
+ * {@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SHOP_WINDOW_POST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SHOP_WINDOW_POST_INFO.java
new file mode 100644
index 0000000..bf5c951
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SHOP_WINDOW_POST_INFO.java
@@ -0,0 +1,92 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.lib.NetSDKLib.HDBJ_MAX_OBJECTS_NUM;
+import static com.ruoyi.device.dhsdk.lib.constant.SDKStructureFieldLenth.SDK_MAX_DETECT_REGION_NUM;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 事件类型
+ * {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SLEEP_DETECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SLEEP_DETECT_INFO.java
new file mode 100644
index 0000000..df6e39f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SLEEP_DETECT_INFO.java
@@ -0,0 +1,120 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SMOKE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SMOKE_INFO.java
new file mode 100644
index 0000000..3ee1444
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_SMOKE_INFO.java
@@ -0,0 +1,158 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_STREET_SUNCURE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_STREET_SUNCURE_INFO.java
new file mode 100644
index 0000000..f4a9e7f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_STREET_SUNCURE_INFO.java
@@ -0,0 +1,106 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.EVENT_INTELLI_COMM_INFO;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_MSG_OBJECT;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_POINT;
+
+/**
+ * @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[] byReserved = new byte[4092];
+
+	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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFICACCIDENT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFICACCIDENT_INFO.java
new file mode 100644
index 0000000..435cfed
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFICACCIDENT_INFO.java
@@ -0,0 +1,75 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.EVENT_TRAFFIC_CAR_PART_INFO;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_EVENT_FILE_INFO;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_MSG_OBJECT;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * @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 byte[]             bReserved=new byte[460];                             
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFICTRUCKFORBID_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFICTRUCKFORBID_INFO.java
new file mode 100644
index 0000000..6a325bb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFICTRUCKFORBID_INFO.java
@@ -0,0 +1,92 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_CARDISTANCESHORT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_CARDISTANCESHORT_INFO.java
new file mode 100644
index 0000000..db85795
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_CARDISTANCESHORT_INFO.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_CAR_MEASUREMENT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_CAR_MEASUREMENT_INFO.java
new file mode 100644
index 0000000..e6e9dd2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_CAR_MEASUREMENT_INFO.java
@@ -0,0 +1,139 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_TRIGGER_TYPE}
+*/
+public			int					emTriggerType;
+/** 
+触发时机 {@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_CAPTURE_PROCESS_END_TYPE}
+*/
+public			int					emCaptureProcess;
+/** 
+卡片信息
+*/
+public NetSDKLib.EVENT_CARD_INFO stuCardInfo=new NetSDKLib.EVENT_CARD_INFO();
+/** 
+车辆行驶方向(相对车道方向) {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_VEHICLE_DRIVING_DIRECTION}
+*/
+public			int					emDrivingDirection;
+/** 
+交通信号灯类型 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_DRIVER_ABNORMAL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_DRIVER_ABNORMAL_INFO.java
new file mode 100644
index 0000000..60034aa
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_DRIVER_ABNORMAL_INFO.java
@@ -0,0 +1,26 @@
+ package com.ruoyi.device.dhsdk.lib.structure;
+
+
+ import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_ELETAGINFO_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_ELETAGINFO_INFO.java
new file mode 100644
index 0000000..e85159c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_ELETAGINFO_INFO.java
@@ -0,0 +1,59 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTORINMOTORROUTE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTORINMOTORROUTE_INFO.java
new file mode 100644
index 0000000..9525c41
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTORINMOTORROUTE_INFO.java
@@ -0,0 +1,110 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_HOLDUMBRELLA_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_HOLDUMBRELLA_INFO.java
new file mode 100644
index 0000000..5f38f37
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_HOLDUMBRELLA_INFO.java
@@ -0,0 +1,95 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_INFO.java
new file mode 100644
index 0000000..8b3d82a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_INFO.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_OVERLOAD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_OVERLOAD_INFO.java
new file mode 100644
index 0000000..9a403fa
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_OVERLOAD_INFO.java
@@ -0,0 +1,90 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_RUN_REDLIGHT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_RUN_REDLIGHT_INFO.java
new file mode 100644
index 0000000..16c4d5a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_RUN_REDLIGHT_INFO.java
@@ -0,0 +1,75 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT_INFO.java
new file mode 100644
index 0000000..84d0070
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT_INFO.java
@@ -0,0 +1,90 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NON_MOTOR_RETROGRADE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NON_MOTOR_RETROGRADE_INFO.java
new file mode 100644
index 0000000..a15153e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_NON_MOTOR_RETROGRADE_INFO.java
@@ -0,0 +1,115 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKINGSPACEOVERLINE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKINGSPACEOVERLINE_INFO.java
new file mode 100644
index 0000000..6caf2b0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKINGSPACEOVERLINE_INFO.java
@@ -0,0 +1,53 @@
+ package com.ruoyi.device.dhsdk.lib.structure;
+
+
+ import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKING_STATISTICS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKING_STATISTICS_INFO.java
new file mode 100644
index 0000000..a1913ba
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKING_STATISTICS_INFO.java
@@ -0,0 +1,95 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_PEDESTRAINRUNREDLIGHT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_PEDESTRAINRUNREDLIGHT_INFO.java
new file mode 100644
index 0000000..60dd621
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_PEDESTRAINRUNREDLIGHT_INFO.java
@@ -0,0 +1,107 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.text.NumberFormat;
+import java.util.Arrays;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 事件类型
+ * {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_REAREND_ACCIDENT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_REAREND_ACCIDENT_INFO.java
new file mode 100644
index 0000000..012dcee
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_REAREND_ACCIDENT_INFO.java
@@ -0,0 +1,86 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_ALERT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_ALERT_INFO.java
new file mode 100644
index 0000000..4e298f3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_ALERT_INFO.java
@@ -0,0 +1,81 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO.java
new file mode 100644
index 0000000..a4a3c71
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+/**
+ * @author 119178
+ * @description 事件类型EVENT_IVS_TRAFFIC_ROAD_BLOCK(交通路障检测事件)对应的数据块描述信息
+ * @date 2020/12/21
+ */
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.EVENT_COMM_INFO;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_EVENT_FILE_INFO;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_RECT;
+import com.ruoyi.device.dhsdk.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;
+
+	public DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO() {
+		int size = new PointerSize().size();
+		bReserved = new byte[4088 - size];// 保留字节
+	}
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO.java
new file mode 100644
index 0000000..c35a89b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO.java
@@ -0,0 +1,77 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.EVENT_COMM_INFO;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_EVENT_FILE_INFO;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_RECT;
+import com.ruoyi.device.dhsdk.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;  
+	
+	public DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO() {
+		int size = new PointerSize().size();
+		bReserved = new byte[4088 - size];// 保留字节
+	}
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_SPECIAL_VEHICLE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_SPECIAL_VEHICLE_INFO.java
new file mode 100644
index 0000000..4464218
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_SPECIAL_VEHICLE_INFO.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_SPEED_DROP_SHARPLY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_SPEED_DROP_SHARPLY_INFO.java
new file mode 100644
index 0000000..890a060
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_SPEED_DROP_SHARPLY_INFO.java
@@ -0,0 +1,88 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_THROW_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_THROW_INFO.java
new file mode 100644
index 0000000..7840fef
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_THROW_INFO.java
@@ -0,0 +1,91 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO.java
new file mode 100644
index 0000000..5486434
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO.java
@@ -0,0 +1,280 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_TRAFFICCAR_CAR_TYPE}
+     */
+    public int emCarType;
+    /**
+     * 车道类型 {@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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;
+    /**
+     * 保留字节,留待扩展.
+     */
+    public byte[] bReserved = new byte[140];
+
+    public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_CLEANLINESS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_CLEANLINESS_INFO.java
new file mode 100644
index 0000000..95da666
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_CLEANLINESS_INFO.java
@@ -0,0 +1,69 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE_INFO.java
new file mode 100644
index 0000000..aa74243
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE_INFO.java
@@ -0,0 +1,83 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_VISIBILITY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_VISIBILITY_INFO.java
new file mode 100644
index 0000000..0b5c1b6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRAFFIC_VISIBILITY_INFO.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRUCKNOTCLEAN_FOR_PRMA_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRUCKNOTCLEAN_FOR_PRMA_INFO.java
new file mode 100644
index 0000000..a5af34c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TRUCKNOTCLEAN_FOR_PRMA_INFO.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TUMBLE_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TUMBLE_DETECTION_INFO.java
new file mode 100644
index 0000000..b398363
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_TUMBLE_DETECTION_INFO.java
@@ -0,0 +1,125 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_VEHICLE_DISTANCE_NEAR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_VEHICLE_DISTANCE_NEAR_INFO.java
new file mode 100644
index 0000000..9b149de
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_VEHICLE_DISTANCE_NEAR_INFO.java
@@ -0,0 +1,57 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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;
+
+    /**
+     *  GPS信息
+     */
+    public NetSDKLib.NET_GPS_STATUS_INFO stuGPSStatusInfo;
+
+    /**
+     *  司机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 byte[] bReserved = new byte[736];
+    
+    public DEV_EVENT_VEHICLE_DISTANCE_NEAR_INFO() {
+    	for (int i = 0; i < stuRelatingVideoInfo.length; i++) {
+    		stuRelatingVideoInfo[i] = new NET_RELATING_VIDEO_INFO();
+		}
+    }
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_VIDEO_NORMAL_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_VIDEO_NORMAL_DETECTION_INFO.java
new file mode 100644
index 0000000..54fab33
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_VIDEO_NORMAL_DETECTION_INFO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_WATERCOLOR_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_WATERCOLOR_DETECTION_INFO.java
new file mode 100644
index 0000000..1d83b9a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_WATERCOLOR_DETECTION_INFO.java
@@ -0,0 +1,82 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_WORKSTATDETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_WORKSTATDETECTION_INFO.java
new file mode 100644
index 0000000..7dba5d6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_WORKSTATDETECTION_INFO.java
@@ -0,0 +1,85 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_WORKACTION_STATE;
+import com.ruoyi.device.dhsdk.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;
+
+	public DEV_EVENT_WORKSTATDETECTION_INFO() {
+		int size = new PointerSize().size();
+		byReserved = new byte[1016 - size];// 保留字节
+	}
+
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_XRAY_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_XRAY_DETECTION_INFO.java
new file mode 100644
index 0000000..ea3e81e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_XRAY_DETECTION_INFO.java
@@ -0,0 +1,135 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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;
+    /**
+     *  所属大类
+     */
+    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];
+
+    /**
+     *  包裹产生方式
+     */
+    public int					emPackageMode;
+
+    /**
+     *  关联图片数量
+     */
+    public int					nRelatedImageNum;
+    /**
+     *  关联图片
+     */
+    public NET_XRAY_RELATED_IMAGE_INFO					stuRelatedImageInfo[] = (NET_XRAY_RELATED_IMAGE_INFO[])new NET_XRAY_RELATED_IMAGE_INFO().toArray(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();
+    
+    /**
+     *  保留字节,留待扩展
+     */
+    public byte					byReserved[] = new byte[372];
+    public DEV_EVENT_XRAY_DETECTION_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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_XRAY_UNPACKING_CHECK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_XRAY_UNPACKING_CHECK_INFO.java
new file mode 100644
index 0000000..ea1fa53
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_EVENT_XRAY_UNPACKING_CHECK_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_RADAR_CONFIG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_RADAR_CONFIG.java
new file mode 100644
index 0000000..1956637
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_RADAR_CONFIG.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_SCADA_DATA_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_SCADA_DATA_INFO.java
new file mode 100644
index 0000000..ba798d4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DEV_SCADA_DATA_INFO.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DHDEVTIME.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DHDEVTIME.java
new file mode 100644
index 0000000..a80a28b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DHDEVTIME.java
@@ -0,0 +1,90 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DHDEV_DEVICE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DHDEV_DEVICE_INFO.java
new file mode 100644
index 0000000..4f664bb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DHDEV_DEVICE_INFO.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DHDEV_SMART_HARDDISK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DHDEV_SMART_HARDDISK.java
new file mode 100644
index 0000000..95c5d31
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DHDEV_SMART_HARDDISK.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DHDEV_SMART_VALUE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DHDEV_SMART_VALUE.java
new file mode 100644
index 0000000..4f612ce
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DHDEV_SMART_VALUE.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_DEVICE_LOG_ITEM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_DEVICE_LOG_ITEM.java
new file mode 100644
index 0000000..a7c780d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_DEVICE_LOG_ITEM.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_DEVICE_LOG_ITEM_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_DEVICE_LOG_ITEM_EX.java
new file mode 100644
index 0000000..76d7a47
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_DEVICE_LOG_ITEM_EX.java
@@ -0,0 +1,82 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_LOG_ITEM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_LOG_ITEM.java
new file mode 100644
index 0000000..db6e369
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_LOG_ITEM.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_OUT_PTZ_VIEW_RANGE_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_OUT_PTZ_VIEW_RANGE_STATUS.java
new file mode 100644
index 0000000..ac4849a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_OUT_PTZ_VIEW_RANGE_STATUS.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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;
+
+    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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_RECT_REGION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_RECT_REGION.java
new file mode 100644
index 0000000..fa0b0cf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_RECT_REGION.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_SIG_CARWAY_INFO_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_SIG_CARWAY_INFO_EX.java
new file mode 100644
index 0000000..63d2c26
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_SIG_CARWAY_INFO_EX.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_TRAFFICFLOWSTAT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_TRAFFICFLOWSTAT.java
new file mode 100644
index 0000000..2d476c5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_TRAFFICFLOWSTAT.java
@@ -0,0 +1,106 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_TRAFFICFLOWSTAT_OUT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_TRAFFICFLOWSTAT_OUT.java
new file mode 100644
index 0000000..abbf833
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DH_TRAFFICFLOWSTAT_OUT.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DISKCTRL_PARAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DISKCTRL_PARAM.java
new file mode 100644
index 0000000..b5967d3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DISKCTRL_PARAM.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DREGS_UNCOVERED_VEHICLE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DREGS_UNCOVERED_VEHICLE_INFO.java
new file mode 100644
index 0000000..f24835c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/DREGS_UNCOVERED_VEHICLE_INFO.java
@@ -0,0 +1,25 @@
+ package com.ruoyi.device.dhsdk.lib.structure;
+
+
+ import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ENTER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ENTER_INFO.java
new file mode 100644
index 0000000..4d50ccc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ENTER_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ENTER_LANE_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ENTER_LANE_STATE.java
new file mode 100644
index 0000000..cd08e33
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ENTER_LANE_STATE.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ENTER_STATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ENTER_STATE_INFO.java
new file mode 100644
index 0000000..1922844
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ENTER_STATE_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ENTER_TRAFFIC_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ENTER_TRAFFIC_INFO.java
new file mode 100644
index 0000000..de8ec1d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ENTER_TRAFFIC_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/EVENT_MANUALSNAP_PARKING_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/EVENT_MANUALSNAP_PARKING_INFO.java
new file mode 100644
index 0000000..f412d84
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/EVENT_MANUALSNAP_PARKING_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/EVENT_PLATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/EVENT_PLATE_INFO.java
new file mode 100644
index 0000000..aa5046b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/EVENT_PLATE_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/EmptyStructure.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/EmptyStructure.java
new file mode 100644
index 0000000..546288d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/EmptyStructure.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FACEBODY_ANALYSE_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FACEBODY_ANALYSE_CAPS.java
new file mode 100644
index 0000000..1e19b05
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FACEBODY_ANALYSE_CAPS.java
@@ -0,0 +1,45 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FACEBODY_DETECT_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FACEBODY_DETECT_CAPS.java
new file mode 100644
index 0000000..3461b30
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FACEBODY_DETECT_CAPS.java
@@ -0,0 +1,46 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FACERECOGNITION_PERSON_INFOEX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FACERECOGNITION_PERSON_INFOEX.java
new file mode 100644
index 0000000..acda2ac
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FACERECOGNITION_PERSON_INFOEX.java
@@ -0,0 +1,108 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_PERSON_FEATURE_ERRCODE;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FACE_TRAIT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FACE_TRAIT.java
new file mode 100644
index 0000000..44712a9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FACE_TRAIT.java
@@ -0,0 +1,46 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FIND_RECORD_ACCESS_CTL_CONSUMPTION_INFO_CONDITION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FIND_RECORD_ACCESS_CTL_CONSUMPTION_INFO_CONDITION.java
new file mode 100644
index 0000000..6efc956
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/FIND_RECORD_ACCESS_CTL_CONSUMPTION_INFO_CONDITION.java
@@ -0,0 +1,48 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/GLOBAL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/GLOBAL_INFO.java
new file mode 100644
index 0000000..6b35796
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/GLOBAL_INFO.java
@@ -0,0 +1,142 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/HUMAN_ATTRIBUTES_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/HUMAN_ATTRIBUTES_INFO.java
new file mode 100644
index 0000000..55af96c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/HUMAN_ATTRIBUTES_INFO.java
@@ -0,0 +1,176 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/HUMAN_ATTRIBUTES_INFO_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/HUMAN_ATTRIBUTES_INFO_EX.java
new file mode 100644
index 0000000..b7adf0a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/HUMAN_ATTRIBUTES_INFO_EX.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/IDENTITY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/IDENTITY_INFO.java
new file mode 100644
index 0000000..170e691
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/IDENTITY_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LAMP_GROUP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LAMP_GROUP_INFO.java
new file mode 100644
index 0000000..ed1c0b9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LAMP_GROUP_INFO.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LAMP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LAMP_INFO.java
new file mode 100644
index 0000000..0add39b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LAMP_INFO.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LAMP_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LAMP_STATE.java
new file mode 100644
index 0000000..151edd8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LAMP_STATE.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LANE_CTRL_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LANE_CTRL_STATE.java
new file mode 100644
index 0000000..eeeb71d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LANE_CTRL_STATE.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LANE_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LANE_STATE.java
new file mode 100644
index 0000000..3560c32
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LANE_STATE.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LANE_STATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LANE_STATE_INFO.java
new file mode 100644
index 0000000..f749337
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LANE_STATE_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LANE_STATE_INFO_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LANE_STATE_INFO_EX.java
new file mode 100644
index 0000000..4d0d779
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LANE_STATE_INFO_EX.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LAN_TRAFFIC_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LAN_TRAFFIC_INFO.java
new file mode 100644
index 0000000..5e28779
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LAN_TRAFFIC_INFO.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LIGHT_COLOR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LIGHT_COLOR_INFO.java
new file mode 100644
index 0000000..a5ec00e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LIGHT_COLOR_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LPNET_RECORDFILE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LPNET_RECORDFILE_INFO.java
new file mode 100644
index 0000000..61df9d1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/LPNET_RECORDFILE_INFO.java
@@ -0,0 +1,60 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MANUAL_SNAP_PARAMETER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MANUAL_SNAP_PARAMETER.java
new file mode 100644
index 0000000..0a7f01e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MANUAL_SNAP_PARAMETER.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_CANDIDATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_CANDIDATE_INFO.java
new file mode 100644
index 0000000..e2e7d7d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_CANDIDATE_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_FACEDETECT_RESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_FACEDETECT_RESULT.java
new file mode 100644
index 0000000..54dbf63
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_FACEDETECT_RESULT.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_FACERECOGNITION_RESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_FACERECOGNITION_RESULT.java
new file mode 100644
index 0000000..55138e5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_FACERECOGNITION_RESULT.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_INFO.java
new file mode 100644
index 0000000..24fd365
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_INFO.java
@@ -0,0 +1,148 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_PARAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_PARAM.java
new file mode 100644
index 0000000..d0de15d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_PARAM.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_MOBILE_ENFORCE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_MOBILE_ENFORCE_INFO.java
new file mode 100644
index 0000000..d0f6691
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_MOBILE_ENFORCE_INFO.java
@@ -0,0 +1,98 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_MOBILE_ENFORCE_FILE_TYPE;
+import com.ruoyi.device.dhsdk.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;
+
+    public MEDIAFILE_MOBILE_ENFORCE_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_MOBILE_ENFORCE_PARAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_MOBILE_ENFORCE_PARAM.java
new file mode 100644
index 0000000..208aa0a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_MOBILE_ENFORCE_PARAM.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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[65828];
+
+    public MEDIAFILE_MOBILE_ENFORCE_PARAM() {
+        dwSize = this.size();
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_INFO.java
new file mode 100644
index 0000000..7991afc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_INFO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_SMART_KITCHEN_CLOTHES_STATE} */
+    public 	int	emHasChefHat;           /** 厨师帽状态 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_SMART_KITCHEN_CLOTHES_STATE} */
+    public 	int  emHasChefClothes;   /** 厨师服状态 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_SMART_KITCHEN_CLOTHES_STATE} */
+    public  int emChefClothesColor;      /**厨师服颜色 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_PARAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_PARAM.java
new file mode 100644
index 0000000..3450c7a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_PARAM.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MONITORWALL_COLLECTION_SCHEDULE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MONITORWALL_COLLECTION_SCHEDULE.java
new file mode 100644
index 0000000..d60fae4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MONITORWALL_COLLECTION_SCHEDULE.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_DEVICE_NAME_LEN;
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MaxNameByteArrInfo.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MaxNameByteArrInfo.java
new file mode 100644
index 0000000..e0ffdec
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MaxNameByteArrInfo.java
@@ -0,0 +1,16 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MaxSceneSupTypeByteArrInfo.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MaxSceneSupTypeByteArrInfo.java
new file mode 100644
index 0000000..45f9294
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/MaxSceneSupTypeByteArrInfo.java
@@ -0,0 +1,14 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NAS_DIRECTORY_CFG_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NAS_DIRECTORY_CFG_INFO.java
new file mode 100644
index 0000000..627c14c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NAS_DIRECTORY_CFG_INFO.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_CFG_NAS_DIRECTORY_PROTOCAL}
+*/
+public			int					emProtocal;
+/** 
+缓存类型 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NETDEV_NETINTERFACE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NETDEV_NETINTERFACE_INFO.java
new file mode 100644
index 0000000..fb862d2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NETDEV_NETINTERFACE_INFO.java
@@ -0,0 +1,97 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NETDEV_VIRTUALCAMERA_STATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NETDEV_VIRTUALCAMERA_STATE_INFO.java
new file mode 100644
index 0000000..12590de
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NETDEV_VIRTUALCAMERA_STATE_INFO.java
@@ -0,0 +1,59 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_3DFLOAT_POINT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_3DFLOAT_POINT.java
new file mode 100644
index 0000000..da086ef
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_3DFLOAT_POINT.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_3DFLOAT_POSTURE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_3DFLOAT_POSTURE.java
new file mode 100644
index 0000000..ed0c561
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_3DFLOAT_POSTURE.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_3DFLOAT_SIZE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_3DFLOAT_SIZE.java
new file mode 100644
index 0000000..cada66d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_3DFLOAT_SIZE.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESSCTL_SPECIALDAY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESSCTL_SPECIALDAY_INFO.java
new file mode 100644
index 0000000..94ce9e5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESSCTL_SPECIALDAY_INFO.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_CARD_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_CARD_CAPS.java
new file mode 100644
index 0000000..f2d566d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_CARD_CAPS.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_FACE_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_FACE_CAPS.java
new file mode 100644
index 0000000..28bb92e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_FACE_CAPS.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_FINGERPRINT_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_FINGERPRINT_CAPS.java
new file mode 100644
index 0000000..9f6b0c4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_FINGERPRINT_CAPS.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_IRIS_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_IRIS_CAPS.java
new file mode 100644
index 0000000..73b1cf6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_IRIS_CAPS.java
@@ -0,0 +1,48 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_USER_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_USER_CAPS.java
new file mode 100644
index 0000000..bd8a6e8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_USER_CAPS.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_USER_INFO_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_USER_INFO_EX.java
new file mode 100644
index 0000000..dcb48cf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ACCESS_USER_INFO_EX.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AC_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AC_CAPS.java
new file mode 100644
index 0000000..95501ea
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AC_CAPS.java
@@ -0,0 +1,88 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AIRBORNE_DETECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AIRBORNE_DETECT.java
new file mode 100644
index 0000000..fbf0b24
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AIRBORNE_DETECT.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  挂空悬浮物检测异常输出结果 
+* @date 2022/06/28 19:44:54
+*/
+public class NET_AIRBORNE_DETECT extends NetSDKLib.SdkStructure {
+/** 
+挂空悬浮物具体类型 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_ARC_OFFLINE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_ARC_OFFLINE_INFO.java
new file mode 100644
index 0000000..e5a0b38
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_ARC_OFFLINE_INFO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_ARMING_FAILURE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_ARMING_FAILURE_INFO.java
new file mode 100644
index 0000000..3e7eeaa
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_ARMING_FAILURE_INFO.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_ARM_TYPE}
+   */
+  public    int emMode;				    // 布撤防模式
+  public 	byte[]					szReserved=new byte[1024];      	// 保留字节
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_ATS_FAULT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_ATS_FAULT_INFO.java
new file mode 100644
index 0000000..ac5f8cf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_ATS_FAULT_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_CHANNEL_COUNT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_CHANNEL_COUNT.java
new file mode 100644
index 0000000..9fc3ab5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_CHANNEL_COUNT.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_DEVICE_MODIFIED_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_DEVICE_MODIFIED_INFO.java
new file mode 100644
index 0000000..9ad7a48
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_DEVICE_MODIFIED_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_DYNAMIC_LOCK_UPLOAD_RANDOMCODE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_DYNAMIC_LOCK_UPLOAD_RANDOMCODE_INFO.java
new file mode 100644
index 0000000..3726bf4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_DYNAMIC_LOCK_UPLOAD_RANDOMCODE_INFO.java
@@ -0,0 +1,47 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_DYNAMIC_PWDLOCK_CLOSE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_DYNAMIC_PWDLOCK_CLOSE_INFO.java
new file mode 100644
index 0000000..699ef0f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_DYNAMIC_PWDLOCK_CLOSE_INFO.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_INFO.java
new file mode 100644
index 0000000..815b18a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_IN_CHANNEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_IN_CHANNEL.java
new file mode 100644
index 0000000..ac17799
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_IN_CHANNEL.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_MANUAL_TEST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_MANUAL_TEST_INFO.java
new file mode 100644
index 0000000..9187ace
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_MANUAL_TEST_INFO.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_MINIINDOOR_RADAR_ALARM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_MINIINDOOR_RADAR_ALARM_INFO.java
new file mode 100644
index 0000000..245e594
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_MINIINDOOR_RADAR_ALARM_INFO.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_OVER_TEMPERATURE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_OVER_TEMPERATURE_INFO.java
new file mode 100644
index 0000000..13785c9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_OVER_TEMPERATURE_INFO.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_REID_CLUSTER_STATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_REID_CLUSTER_STATE_INFO.java
new file mode 100644
index 0000000..eeb2a37
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_REID_CLUSTER_STATE_INFO.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型DH_ALARM_REID_CLUSTER_STATE (REID项目上报设备聚档状态事件)对应的数据块描述信息
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_RF_JAMMING_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_RF_JAMMING_INFO.java
new file mode 100644
index 0000000..fe37710
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_RF_JAMMING_INFO.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER.java
new file mode 100644
index 0000000..bfe8ec1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER.java
@@ -0,0 +1,97 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_ALARM_USERAUTHORITY}
+	 */
+	public int[] emAuthorityList = new int[32];
+	/**
+	 * 用户所在组 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_ALARM_USER_GROUP}
+	 */
+	public int emGroup;
+	/**
+	 * 是否为保留用户,保留用户不可删除
+	 */
+	public int bReserved;
+	/**
+	 * 用户类型 {@link com.ruoyi.device.dhsdk.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;
+
+	public NET_ALARM_USER() {
+		int size = new PointerSize().size();
+		byReserved = new byte[256 - size];// 保留字节		
+	}
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER_EXTERN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER_EXTERN.java
new file mode 100644
index 0000000..de52ec5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER_EXTERN.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER_MODIFIED_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER_MODIFIED_INFO.java
new file mode 100644
index 0000000..ff3368f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER_MODIFIED_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.NET_EVENT_OPERATE_TYPE;}
+     */
+	public int emOpType;								// 操作类型
+    /**
+     * {@link com.ruoyi.device.dhsdk.lib.enumeration.NET_EVENT_USER_TYPE;}
+     */
+	public int emUserType;								// 用户类型
+	public byte[]							szReserved=new byte[1024];      					// 保留字节
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER_ONECLICKARMING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER_ONECLICKARMING.java
new file mode 100644
index 0000000..dab1c34
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER_ONECLICKARMING.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_ALARM_ONECLICKARMING_FUNCTION}
+	 */
+	public int emFunction;
+	/**
+	 * 触发类型 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_ALARM_ONECLICKARMING_TRIGGEROPTION}
+	 */
+	public int emTriggerOption;
+	/**
+	 * 一键布防类型 {@link com.ruoyi.device.dhsdk.lib.enumeration.NET_EM_SCENE_MODE}
+	 */
+	public int emArmProfile;
+	/**
+	 * 布撤防模式 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER_PASS_CONFIRM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER_PASS_CONFIRM_INFO.java
new file mode 100644
index 0000000..ffe1034
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_USER_PASS_CONFIRM_INFO.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_USER_PASS_TYPE}
+     */
+    public int				emType;
+    /**
+     * 保留字节
+     */
+    public byte[]           szReserved=new byte[1024];
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_WIFI_FAILURE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_WIFI_FAILURE_INFO.java
new file mode 100644
index 0000000..7d21055
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALARM_WIFI_FAILURE_INFO.java
@@ -0,0 +1,49 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_BUILD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_BUILD_INFO.java
new file mode 100644
index 0000000..00faa99
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_BUILD_INFO.java
@@ -0,0 +1,15 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_DEV_STORAGE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_DEV_STORAGE_INFO.java
new file mode 100644
index 0000000..ad811ae
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_DEV_STORAGE_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_ALGORITHM_PARTITION_TYPE;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_SDK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_SDK_INFO.java
new file mode 100644
index 0000000..42cf131
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_SDK_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_SVN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_SVN_INFO.java
new file mode 100644
index 0000000..8c77815
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_SVN_INFO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_UPGRADE_AI_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_UPGRADE_AI_INFO.java
new file mode 100644
index 0000000..066a550
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ALGORITHM_UPGRADE_AI_INFO.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL.java
new file mode 100644
index 0000000..54ca47b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL_CALIBRATEAREA.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL_CALIBRATEAREA.java
new file mode 100644
index 0000000..ebcee57
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL_CALIBRATEAREA.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.DH_POINT;
+import com.ruoyi.device.dhsdk.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	DH_POINT[]					stuCalibratePloygonArea=new 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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL_LANES.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL_LANES.java
new file mode 100644
index 0000000..b63097a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL_LANES.java
@@ -0,0 +1,62 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.DH_POINT;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.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	DH_POINT []					stuLeftLinePoint= new DH_POINT[20];
+	/**
+	 * 左车道线点个数
+	 */
+	public	int							nLeftLinePointNum;	
+	/**
+	 * 左车道线的属性
+	 * {@link EM_GLOBAL_LANES_LINE_TYPE}
+	 */
+	public	int                     	emLeftLineType;	
+	/**
+	 * 右车道线,车道线的方向表示车道方向,沿车道方向左边的称为左车道线点的坐标坐标归一化到[0,8192)区间
+	 */
+	public	DH_POINT []					stuRightLinePoint= new 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 DH_POINT();
+		}
+
+		for(int i=0;i<stuRightLinePoint.length;i++){
+			stuRightLinePoint[i]=new DH_POINT();
+		}
+	}
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANALYSE_TASK_MODULE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANALYSE_TASK_MODULE.java
new file mode 100644
index 0000000..773aeb2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANALYSE_TASK_MODULE.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_POLY_POINTS;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANATOMY_TEMP_DETECT_ANATOMYTEMPDETECT_RESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANATOMY_TEMP_DETECT_ANATOMYTEMPDETECT_RESULT.java
new file mode 100644
index 0000000..102daaf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANATOMY_TEMP_DETECT_ANATOMYTEMPDETECT_RESULT.java
@@ -0,0 +1,16 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANATOMY_TEMP_DETECT_FILTER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANATOMY_TEMP_DETECT_FILTER.java
new file mode 100644
index 0000000..f1dcc6c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANATOMY_TEMP_DETECT_FILTER.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANIMAL_OBJECTS_STATISTICS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANIMAL_OBJECTS_STATISTICS.java
new file mode 100644
index 0000000..38f3fcc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANIMAL_OBJECTS_STATISTICS.java
@@ -0,0 +1,25 @@
+ package com.ruoyi.device.dhsdk.lib.structure;
+
+
+ import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANIMAL_OBJECT_LIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANIMAL_OBJECT_LIST_INFO.java
new file mode 100644
index 0000000..92488aa
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANIMAL_OBJECT_LIST_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANIMAL_SCENE_IMAGE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANIMAL_SCENE_IMAGE_INFO.java
new file mode 100644
index 0000000..d367049
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANIMAL_SCENE_IMAGE_INFO.java
@@ -0,0 +1,32 @@
+ package com.ruoyi.device.dhsdk.lib.structure;
+
+
+ import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANTIGEN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANTIGEN_INFO.java
new file mode 100644
index 0000000..0fe1cc6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANTIGEN_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANTI_SUBMARINE_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANTI_SUBMARINE_CAPS.java
new file mode 100644
index 0000000..9fbc924
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ANTI_SUBMARINE_CAPS.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_APRON_ATTRIBUTE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_APRON_ATTRIBUTE.java
new file mode 100644
index 0000000..4cafdaa
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_APRON_ATTRIBUTE.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_COMPLIANCE_STATE;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AREAS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AREAS_INFO.java
new file mode 100644
index 0000000..a754b05
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AREAS_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AREA_MODE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AREA_MODE_INFO.java
new file mode 100644
index 0000000..d24d187
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AREA_MODE_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ARMMODE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ARMMODE_INFO.java
new file mode 100644
index 0000000..9ea48ed
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ARMMODE_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ARM_OPTIONS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ARM_OPTIONS.java
new file mode 100644
index 0000000..66ffe83
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ARM_OPTIONS.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 布撤防详细信息
+ * @date 2023/03/15 16:05:03
+ */
+public class NET_ARM_OPTIONS extends NetSDKLib.SdkStructure {
+	/**
+	 * 情景模式 {@link com.ruoyi.device.dhsdk.lib.enumeration.NET_EM_SCENE_MODE}
+	 */
+	public int emSceneMode;
+	/**
+	 * 触发方式 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ATTRIBUTE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ATTRIBUTE_INFO.java
new file mode 100644
index 0000000..9bc0588
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ATTRIBUTE_INFO.java
@@ -0,0 +1,115 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AUDIOOUT_VOLUME_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AUDIOOUT_VOLUME_INFO.java
new file mode 100644
index 0000000..9bcb968
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AUDIOOUT_VOLUME_INFO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AUDIO_DATA_CB_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AUDIO_DATA_CB_INFO.java
new file mode 100644
index 0000000..e2a6f60
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AUDIO_DATA_CB_INFO.java
@@ -0,0 +1,52 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AUDIO_DECODE_FORMAT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AUDIO_DECODE_FORMAT.java
new file mode 100644
index 0000000..3ac8061
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AUDIO_DECODE_FORMAT.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AUDIO_OUTPUT_CHANNEL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AUDIO_OUTPUT_CHANNEL_INFO.java
new file mode 100644
index 0000000..e2db87a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_AUDIO_OUTPUT_CHANNEL_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BACKUP_SOURCE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BACKUP_SOURCE.java
new file mode 100644
index 0000000..88e8e1b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BACKUP_SOURCE.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BACKUP_STATES_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BACKUP_STATES_INFO.java
new file mode 100644
index 0000000..5e0787a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BACKUP_STATES_INFO.java
@@ -0,0 +1,10 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BACKUP_TARGET.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BACKUP_TARGET.java
new file mode 100644
index 0000000..6b9fb30
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BACKUP_TARGET.java
@@ -0,0 +1,15 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BAND_SPEED_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BAND_SPEED_INFO.java
new file mode 100644
index 0000000..4964bde
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BAND_SPEED_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BARRIERS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BARRIERS_INFO.java
new file mode 100644
index 0000000..d56fd64
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BARRIERS_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BARRIER_LIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BARRIER_LIST_INFO.java
new file mode 100644
index 0000000..b1ea0b9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BARRIER_LIST_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BAR_CODE_IMAGE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BAR_CODE_IMAGE.java
new file mode 100644
index 0000000..db9e4e6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BAR_CODE_IMAGE.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BAR_CODE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BAR_CODE_INFO.java
new file mode 100644
index 0000000..fe7c3e5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BAR_CODE_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BATTERY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BATTERY_INFO.java
new file mode 100644
index 0000000..13f3e24
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BATTERY_INFO.java
@@ -0,0 +1,52 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BLACK_WHITE_DETECTIONRESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BLACK_WHITE_DETECTIONRESULT.java
new file mode 100644
index 0000000..c577560
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BLACK_WHITE_DETECTIONRESULT.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BOAT_OBJECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BOAT_OBJECT.java
new file mode 100644
index 0000000..aa87071
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BOAT_OBJECT.java
@@ -0,0 +1,58 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BOOT_ATTRIBUTE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BOOT_ATTRIBUTE.java
new file mode 100644
index 0000000..3e0bb34
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BOOT_ATTRIBUTE.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_COMPLIANCE_STATE;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BROADCAST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BROADCAST_INFO.java
new file mode 100644
index 0000000..caab9ec
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BROADCAST_INFO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BURN_PARAM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BURN_PARAM_INFO.java
new file mode 100644
index 0000000..b7214d1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_BURN_PARAM_INFO.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 刻录参数配置
+ * 对应枚举{@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CAMERA_CFG_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CAMERA_CFG_INFO.java
new file mode 100644
index 0000000..bbe61b8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CAMERA_CFG_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CAMERA_PTZ_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CAMERA_PTZ_INFO.java
new file mode 100644
index 0000000..38ee099
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CAMERA_PTZ_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CANDIDATE_INFOEX2.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CANDIDATE_INFOEX2.java
new file mode 100644
index 0000000..1ea1fe8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CANDIDATE_INFOEX2.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CARDNOARRAY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CARDNOARRAY_INFO.java
new file mode 100644
index 0000000..3f74b29
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CARDNOARRAY_INFO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CAR_WEIGHT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CAR_WEIGHT_INFO.java
new file mode 100644
index 0000000..7917208
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CAR_WEIGHT_INFO.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_BACKUPTASK_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_BACKUPTASK_STATE.java
new file mode 100644
index 0000000..d1e1df6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_BACKUPTASK_STATE.java
@@ -0,0 +1,14 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_CAMERASTATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_CAMERASTATE.java
new file mode 100644
index 0000000..eb264df
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_CAMERASTATE.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_CROWD_DISTRI_STREAM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_CROWD_DISTRI_STREAM_INFO.java
new file mode 100644
index 0000000..98429b6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_CROWD_DISTRI_STREAM_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_CUSTOM_SNAP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_CUSTOM_SNAP_INFO.java
new file mode 100644
index 0000000..f78193f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_CUSTOM_SNAP_INFO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_REDIRECT_SERVER_CALLBACK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_REDIRECT_SERVER_CALLBACK_INFO.java
new file mode 100644
index 0000000..15e9647
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_REDIRECT_SERVER_CALLBACK_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_STATES.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_STATES.java
new file mode 100644
index 0000000..eab21e2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_STATES.java
@@ -0,0 +1,14 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_THINGS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_THINGS_INFO.java
new file mode 100644
index 0000000..7a52afa
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_THINGS_INFO.java
@@ -0,0 +1,49 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_THINGS_PROPER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_THINGS_PROPER_INFO.java
new file mode 100644
index 0000000..32fd0c8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_THINGS_PROPER_INFO.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_TRANSMIT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_TRANSMIT_INFO.java
new file mode 100644
index 0000000..ca465cb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_TRANSMIT_INFO.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_VIDEOSTAT_HEATMAP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_VIDEOSTAT_HEATMAP.java
new file mode 100644
index 0000000..b56b171
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_VIDEOSTAT_HEATMAP.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_HEATMAP_TYPE}
+     */
+    public int emHeatMapType;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[1024];
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_VIDEOSTAT_STREAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_VIDEOSTAT_STREAM.java
new file mode 100644
index 0000000..3330006
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CB_VIDEOSTAT_STREAM.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_ACCESSCONTROL_MEASURE_TEMP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_ACCESSCONTROL_MEASURE_TEMP_INFO.java
new file mode 100644
index 0000000..f9ec49d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_ACCESSCONTROL_MEASURE_TEMP_INFO.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE_INFO.java
new file mode 100644
index 0000000..65e408b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE_INFO.java
@@ -0,0 +1,61 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 门禁假日计划配置
+ * 对应枚举类型{@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_ACCESSCTL_SPECIALDAY_GROUP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_ACCESSCTL_SPECIALDAY_GROUP_INFO.java
new file mode 100644
index 0000000..0127311
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_ACCESSCTL_SPECIALDAY_GROUP_INFO.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_AC_GZYD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_AC_GZYD_INFO.java
new file mode 100644
index 0000000..c5b30f3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_AC_GZYD_INFO.java
@@ -0,0 +1,53 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_AREA_ARM_MODE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_AREA_ARM_MODE_INFO.java
new file mode 100644
index 0000000..5973ef1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_AREA_ARM_MODE_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_AUDIO_PLAY_PATH.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_AUDIO_PLAY_PATH.java
new file mode 100644
index 0000000..62f4ef0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_AUDIO_PLAY_PATH.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_AUDIO_PROPERTY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_AUDIO_PROPERTY.java
new file mode 100644
index 0000000..dd3c41f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_AUDIO_PROPERTY.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_BGY_CUSTOMERCFG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_BGY_CUSTOMERCFG.java
new file mode 100644
index 0000000..9feba11
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_BGY_CUSTOMERCFG.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_PLAY_WITH_MODE;
+import com.ruoyi.device.dhsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_BSCCUSTOM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_BSCCUSTOM.java
new file mode 100644
index 0000000..ffb6e73
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_BSCCUSTOM.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_MAIN_PAGE_STATE;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CALIBRATEBOX_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CALIBRATEBOX_INFO.java
new file mode 100644
index 0000000..83d47b7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CALIBRATEBOX_INFO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * 校准框信息
+ */
+public class NET_CFG_CALIBRATEBOX_INFO extends SdkStructure {
+    /**
+     * 校准框中心点坐标(点的坐标归一化到[0,8191]区间)
+     */
+    public POINTCOORDINATE stuCenterPoint=new POINTCOORDINATE();
+    /**
+     * 相对基准校准框的比率(比如1表示基准框大小,0.5表示基准框大小的一半)
+     */
+    public float               fRatio;
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CAP_ACCESSCONTROL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CAP_ACCESSCONTROL.java
new file mode 100644
index 0000000..a32a105
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CAP_ACCESSCONTROL.java
@@ -0,0 +1,53 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CAP_AUDIO_FORMAT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CAP_AUDIO_FORMAT.java
new file mode 100644
index 0000000..c36e1b0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CAP_AUDIO_FORMAT.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CAP_SPEAK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CAP_SPEAK.java
new file mode 100644
index 0000000..6d727cb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CAP_SPEAK.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CARD_MNG_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CARD_MNG_INFO.java
new file mode 100644
index 0000000..572ac46
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CARD_MNG_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CONSUMPTION_STRATEGY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CONSUMPTION_STRATEGY_INFO.java
new file mode 100644
index 0000000..9fcfb7c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CONSUMPTION_STRATEGY_INFO.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_COURSE_RECORD_DEFAULT_CONFIG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_COURSE_RECORD_DEFAULT_CONFIG.java
new file mode 100644
index 0000000..6d01fd4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_COURSE_RECORD_DEFAULT_CONFIG.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_CAN_START_STREAM;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_COMPOSIT_CHANNEL_BIND_MODE;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CUSTOMER_DEV_SETTING_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CUSTOMER_DEV_SETTING_INFO.java
new file mode 100644
index 0000000..c0926b4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_CUSTOMER_DEV_SETTING_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_DISABLE_BEEP_LINKAGE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_DISABLE_BEEP_LINKAGE_INFO.java
new file mode 100644
index 0000000..68012bf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_DISABLE_BEEP_LINKAGE_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_DISABLE_LINKAGE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_DISABLE_LINKAGE.java
new file mode 100644
index 0000000..5040e78
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_DISABLE_LINKAGE.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_DISABLE_LINKAGE_TIME_SECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_DISABLE_LINKAGE_TIME_SECTION.java
new file mode 100644
index 0000000..6715ba1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_DISABLE_LINKAGE_TIME_SECTION.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_ENVIRONMENT_THERM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_ENVIRONMENT_THERM_INFO.java
new file mode 100644
index 0000000..25ece45
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_ENVIRONMENT_THERM_INFO.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_FILE_HOLD_DAYS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_FILE_HOLD_DAYS_INFO.java
new file mode 100644
index 0000000..8ab94f3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_FILE_HOLD_DAYS_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_FINANCIAL_CABINET_CONFIG_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_FINANCIAL_CABINET_CONFIG_INFO.java
new file mode 100644
index 0000000..158e401
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_FINANCIAL_CABINET_CONFIG_INFO.java
@@ -0,0 +1,68 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_FORBIDDEN_ADVERT_PLAY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_FORBIDDEN_ADVERT_PLAY.java
new file mode 100644
index 0000000..61c219a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_FORBIDDEN_ADVERT_PLAY.java
@@ -0,0 +1,45 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_FORBIDDEN_ADVERT_PLAY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_FORBIDDEN_ADVERT_PLAY_INFO.java
new file mode 100644
index 0000000..1fd5df1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_FORBIDDEN_ADVERT_PLAY_INFO.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_HEALTH_CODE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_HEALTH_CODE_INFO.java
new file mode 100644
index 0000000..c512220
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_HEALTH_CODE_INFO.java
@@ -0,0 +1,94 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_AFBSTATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_AFBSTATUS.java
new file mode 100644
index 0000000..ca84d89
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_AFBSTATUS.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_BREATHE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_BREATHE.java
new file mode 100644
index 0000000..2fb9f91
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_BREATHE.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_COMP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_COMP_INFO.java
new file mode 100644
index 0000000..48415c4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_COMP_INFO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_DECT_PARAM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_DECT_PARAM_INFO.java
new file mode 100644
index 0000000..194142c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_DECT_PARAM_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_FALLALARM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_FALLALARM.java
new file mode 100644
index 0000000..dd5cd6d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_FALLALARM.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_HEATERATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_HEATERATE.java
new file mode 100644
index 0000000..abc8326
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_HEATERATE.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_INDOOR_ALARM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_INDOOR_ALARM_INFO.java
new file mode 100644
index 0000000..10b79dd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_INDOOR_ALARM_INFO.java
@@ -0,0 +1,45 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_INSTALL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_INSTALL_INFO.java
new file mode 100644
index 0000000..603288d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_INSTALL_INFO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_NUMALARM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_NUMALARM.java
new file mode 100644
index 0000000..8dc0ba2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_NUMALARM.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_REGION_DETECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_REGION_DETECT_INFO.java
new file mode 100644
index 0000000..88285c9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_REGION_DETECT_INFO.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_RESIDENTALARM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_RESIDENTALARM.java
new file mode 100644
index 0000000..d8c58f4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_MINIRADAR_RESIDENTALARM.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_NAS_DIRECTORY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_NAS_DIRECTORY.java
new file mode 100644
index 0000000..7b299fd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_NAS_DIRECTORY.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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					nNASCfgGetNum;
+/** 
+实际获取到的NAS共享目录配置数量
+*/
+public			int					nNASCfgRealNum;
+/** 
+获取到的配置信息指针, 需用户申请内存   {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_OBJECT_FILTER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_OBJECT_FILTER_INFO.java
new file mode 100644
index 0000000..79c4cc2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_OBJECT_FILTER_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_QR_CODE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_QR_CODE_INFO.java
new file mode 100644
index 0000000..f2ac36a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_QR_CODE_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * @author 119178
+ * @version 1.0
+ * @description 配置二维码有效时间
+ * 对应枚举{@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RADAR_DEVLIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RADAR_DEVLIST_INFO.java
new file mode 100644
index 0000000..a40d2ce
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RADAR_DEVLIST_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RADAR_RFIDCARD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RADAR_RFIDCARD_INFO.java
new file mode 100644
index 0000000..946a953
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RADAR_RFIDCARD_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RADAR_SCREEN_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RADAR_SCREEN_RULE_INFO.java
new file mode 100644
index 0000000..cb176a4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RADAR_SCREEN_RULE_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_REMOTE_DISABLE_LINKAGE_TIME_SECTION_SYNC_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_REMOTE_DISABLE_LINKAGE_TIME_SECTION_SYNC_INFO.java
new file mode 100644
index 0000000..7f78bb5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_REMOTE_DISABLE_LINKAGE_TIME_SECTION_SYNC_INFO.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_CHANNELS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_CHANNELS_INFO.java
new file mode 100644
index 0000000..4b32aaf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_CHANNELS_INFO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_CROSSLIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_CROSSLIST_INFO.java
new file mode 100644
index 0000000..ae03056
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_CROSSLIST_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_MANAGE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_MANAGE_INFO.java
new file mode 100644
index 0000000..78308d0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_MANAGE_INFO.java
@@ -0,0 +1,80 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_NIGHTASK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_NIGHTASK_INFO.java
new file mode 100644
index 0000000..bc3df16
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_NIGHTASK_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_OPTIMIZES_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_OPTIMIZES_INFO.java
new file mode 100644
index 0000000..5b41759
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_OPTIMIZES_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_OVERFLOW_CONTROL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_OVERFLOW_CONTROL_INFO.java
new file mode 100644
index 0000000..989bc0f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_OVERFLOW_CONTROL_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_PEDDESTRAIN_PRIORITY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_PEDDESTRAIN_PRIORITY_INFO.java
new file mode 100644
index 0000000..2fa1952
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_PEDDESTRAIN_PRIORITY_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_PEDDETECTOR_LIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_PEDDETECTOR_LIST_INFO.java
new file mode 100644
index 0000000..0741ac0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_PEDDETECTOR_LIST_INFO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_PLANS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_PLANS_INFO.java
new file mode 100644
index 0000000..97c2b6d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_PLANS_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_VARLANELIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_VARLANELIST_INFO.java
new file mode 100644
index 0000000..f077ed3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_VARLANELIST_INFO.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_VARLANE_MANAGEMENT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_VARLANE_MANAGEMENT_INFO.java
new file mode 100644
index 0000000..d2d0ed5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_VARLANE_MANAGEMENT_INFO.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_VEHICLE_DETECTORLIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_VEHICLE_DETECTORLIST_INFO.java
new file mode 100644
index 0000000..9ae76e1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_SCH_VEHICLE_DETECTORLIST_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_TEMP_SCH_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_TEMP_SCH_INFO.java
new file mode 100644
index 0000000..f21a272
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_RTSC_TEMP_SCH_INFO.java
@@ -0,0 +1,57 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_SIZE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_SIZE.java
new file mode 100644
index 0000000..1dfe2b2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_SIZE.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * 物体尺寸
+ */
+public class NET_CFG_SIZE extends SdkStructure {
+    /**
+     * 针对使用的不同,该字段有两种含义:宽,面积
+     * 使用哪种含义由配置的是宽高还是面积决定
+     */
+    public float nWide;
+
+    /**
+     * 高
+     */
+    public float             nHeight;
+
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_SIZEFILTER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_SIZEFILTER_INFO.java
new file mode 100644
index 0000000..4674044
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_SIZEFILTER_INFO.java
@@ -0,0 +1,95 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_SIZE_WIDE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_SIZE_WIDE.java
new file mode 100644
index 0000000..6df5339
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_SIZE_WIDE.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.sun.jna.Union;
+
+/**
+ * 物体尺寸宽度
+ */
+public class NET_CFG_SIZE_WIDE extends Union {
+    /**
+     * 宽
+     */
+    public float nWidth;
+    /**
+     * 面积
+     */
+    public float nArea;
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_THERMOMETRY_SHIELD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_THERMOMETRY_SHIELD_INFO.java
new file mode 100644
index 0000000..5b3bea4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_THERMOMETRY_SHIELD_INFO.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_TIME_RECORDBACKUP_RESTORE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_TIME_RECORDBACKUP_RESTORE_INFO.java
new file mode 100644
index 0000000..e80f9f5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_TIME_RECORDBACKUP_RESTORE_INFO.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_TRAFFIC_LAMP_CONFIG_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_TRAFFIC_LAMP_CONFIG_INFO.java
new file mode 100644
index 0000000..deb2fe4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_TRAFFIC_LAMP_CONFIG_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VIDEOTALK_SIGNLIGHT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VIDEOTALK_SIGNLIGHT.java
new file mode 100644
index 0000000..8c5d244
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VIDEOTALK_SIGNLIGHT.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VIOLATIONTYPE_NORMAL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VIOLATIONTYPE_NORMAL.java
new file mode 100644
index 0000000..1470246
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VIOLATIONTYPE_NORMAL.java
@@ -0,0 +1,15 @@
+ package com.ruoyi.device.dhsdk.lib.structure;
+
+
+ import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_GAVI_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_GAVI_INFO.java
new file mode 100644
index 0000000..9d29e01
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_GAVI_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_GAYS_SERVER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_GAYS_SERVER_INFO.java
new file mode 100644
index 0000000..788548c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_GAYS_SERVER_INFO.java
@@ -0,0 +1,46 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_ELEMENT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_ELEMENT.java
new file mode 100644
index 0000000..8ec4429
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_ELEMENT.java
@@ -0,0 +1,19 @@
+ package com.ruoyi.device.dhsdk.lib.structure;
+
+
+ import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_LEDCONFIG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_LEDCONFIG.java
new file mode 100644
index 0000000..29780b0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_LEDCONFIG.java
@@ -0,0 +1,10 @@
+ package com.ruoyi.device.dhsdk.lib.structure;
+ import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_NOPLATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_NOPLATE.java
new file mode 100644
index 0000000..a79a066
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_NOPLATE.java
@@ -0,0 +1,13 @@
+ package com.ruoyi.device.dhsdk.lib.structure;
+
+
+ import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_PARKING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_PARKING.java
new file mode 100644
index 0000000..96b5d8c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_PARKING.java
@@ -0,0 +1,11 @@
+ package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+ /**
+  * 车位配置
+  */
+ public class NET_CFG_VSP_LXSJ_PARKING extends NetSDKLib.SdkStructure {
+/** 倒计时目标值*/
+public			int					nCountDownTime;
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_VIOLATIONTYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_VIOLATIONTYPE.java
new file mode 100644
index 0000000..8c2ad02
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_VSP_LXSJ_VIOLATIONTYPE.java
@@ -0,0 +1,35 @@
+ package com.ruoyi.device.dhsdk.lib.structure;
+
+
+ import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_WIEGAND_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_WIEGAND_INFO.java
new file mode 100644
index 0000000..d7cc248
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CFG_WIEGAND_INFO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNELS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNELS_INFO.java
new file mode 100644
index 0000000..332a534
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNELS_INFO.java
@@ -0,0 +1,46 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNELS_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNELS_STATE.java
new file mode 100644
index 0000000..b432442
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNELS_STATE.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  通道状态
+* @date 2022/10/09 11:24:36
+*/
+public class NET_CHANNELS_STATE extends NetSDKLib.SdkStructure {
+/** 
+通道类型 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_CHANNELS_STATE_TYPE}
+*/
+public			int					emType;
+/** 
+通道号
+*/
+public			int					nIndex;
+/** 
+在线状态 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_DEV_STATUS}
+*/
+public			int					emOnlineState;
+/** 
+报警状态,当emType为EM_CHANNELS_STATE_TYPE_ALARMIN时有效 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_ZONE_STATUS}
+*/
+public			int					emAlarmState;
+/** 
+输出状态,当emType为EM_CHANNELS_STATE_TYPE_ALARMOUT,EM_CHANNELS_STATE_TYPE_SIREN时有效 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNELS_STATE_CONDITION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNELS_STATE_CONDITION.java
new file mode 100644
index 0000000..6af669b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNELS_STATE_CONDITION.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  获取通道状态查询条件 
+* @date 2022/10/09 11:22:21
+*/
+public class NET_CHANNELS_STATE_CONDITION extends NetSDKLib.SdkStructure {
+/** 
+通道类型 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNEL_CFG_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNEL_CFG_INFO.java
new file mode 100644
index 0000000..de13393
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNEL_CFG_INFO.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_ENTRY_DIRECTION;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNEL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNEL_INFO.java
new file mode 100644
index 0000000..77eda86
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNEL_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNEL_STATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNEL_STATE_INFO.java
new file mode 100644
index 0000000..56b36a1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNEL_STATE_INFO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNEL_STATE_INFO_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNEL_STATE_INFO_EX.java
new file mode 100644
index 0000000..355e71d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CHANNEL_STATE_INFO_EX.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CIGARETTE_CASE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CIGARETTE_CASE_INFO.java
new file mode 100644
index 0000000..3f166f0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CIGARETTE_CASE_INFO.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CLASSIFY_RESULT_STATISTICS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CLASSIFY_RESULT_STATISTICS_INFO.java
new file mode 100644
index 0000000..bcf570c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CLASSIFY_RESULT_STATISTICS_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CLOSURE_SETTING_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CLOSURE_SETTING_INFO.java
new file mode 100644
index 0000000..206e003
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CLOSURE_SETTING_INFO.java
@@ -0,0 +1,85 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CLUSTER_DETAIL_CONDITION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CLUSTER_DETAIL_CONDITION.java
new file mode 100644
index 0000000..4cea5f0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CLUSTER_DETAIL_CONDITION.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CLUSTER_DETAIL_FIND_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CLUSTER_DETAIL_FIND_INFO.java
new file mode 100644
index 0000000..17cd93b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CLUSTER_DETAIL_FIND_INFO.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COLOR_MASKING_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COLOR_MASKING_CAPS.java
new file mode 100644
index 0000000..4062076
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COLOR_MASKING_CAPS.java
@@ -0,0 +1,46 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COLOR_RGBA.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COLOR_RGBA.java
new file mode 100644
index 0000000..de81ecd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COLOR_RGBA.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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;
+    }
+
+    public String toString() {
+        return String.format("RGBN ( %03d, %03d, %03d, %03d )", nRed, nGreen, nBlue, nAlpha);
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMMON_CONFIG_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMMON_CONFIG_INFO.java
new file mode 100644
index 0000000..6e1a174
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMMON_CONFIG_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMMON_DATE_PLAN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMMON_DATE_PLAN_INFO.java
new file mode 100644
index 0000000..7b9e754
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMMON_DATE_PLAN_INFO.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMM_PROP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMM_PROP.java
new file mode 100644
index 0000000..cdbc177
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMM_PROP.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSE_CHANNEL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSE_CHANNEL_INFO.java
new file mode 100644
index 0000000..424f0a3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSE_CHANNEL_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSE_PLAN_DETAIL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSE_PLAN_DETAIL_INFO.java
new file mode 100644
index 0000000..01fdf4e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSE_PLAN_DETAIL_INFO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_SPLIT_MODE;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSE_PLAN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSE_PLAN_INFO.java
new file mode 100644
index 0000000..4df6f34
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSE_PLAN_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSITECHANNELMODE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSITECHANNELMODE_INFO.java
new file mode 100644
index 0000000..1d19c23
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSITECHANNELMODE_INFO.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_COMMON_STRING_128;
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSITECHANNELMODE_WINDOWS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSITECHANNELMODE_WINDOWS.java
new file mode 100644
index 0000000..db73086
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSITECHANNELMODE_WINDOWS.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSITECHANNEL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSITECHANNEL_INFO.java
new file mode 100644
index 0000000..e57d9a8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COMPOSITECHANNEL_INFO.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CONFIG_OPENSSL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CONFIG_OPENSSL_INFO.java
new file mode 100644
index 0000000..9a3670e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CONFIG_OPENSSL_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CONFIG_STREAMCONVERTOR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CONFIG_STREAMCONVERTOR_INFO.java
new file mode 100644
index 0000000..99f4329
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CONFIG_STREAMCONVERTOR_INFO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COUNT_DETAIL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COUNT_DETAIL_INFO.java
new file mode 100644
index 0000000..b5be66a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COUNT_DETAIL_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSE.java
new file mode 100644
index 0000000..01b0a8c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSE.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_CAN_START_STREAM;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_COURSE_STATE;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_IS_RECORD;
+
+import static com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_COMMON_STRING_128;
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSECOMPOSITE_CHANNEL_MODE_ADD_RESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSECOMPOSITE_CHANNEL_MODE_ADD_RESULT.java
new file mode 100644
index 0000000..a57ba83
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSECOMPOSITE_CHANNEL_MODE_ADD_RESULT.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSEMEDIA_FILE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSEMEDIA_FILE_INFO.java
new file mode 100644
index 0000000..bede0a4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSEMEDIA_FILE_INFO.java
@@ -0,0 +1,45 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSE_INFO.java
new file mode 100644
index 0000000..33b06bc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSE_INFO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_COMMON_STRING_128;
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSE_RESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSE_RESULT.java
new file mode 100644
index 0000000..363ab78
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COURSE_RESULT.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COVER_PLATE_DETECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COVER_PLATE_DETECT.java
new file mode 100644
index 0000000..cadb67b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_COVER_PLATE_DETECT.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  盖板检测结果 
+* @date 2022/06/28 19:44:56
+*/
+public class NET_COVER_PLATE_DETECT extends NetSDKLib.SdkStructure {
+/** 
+盖板状态 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CPU_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CPU_INFO.java
new file mode 100644
index 0000000..c8c592b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CPU_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CPU_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CPU_STATUS.java
new file mode 100644
index 0000000..c14d5b6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CPU_STATUS.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CROSSREGION_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CROSSREGION_RULE_INFO.java
new file mode 100644
index 0000000..929fdda
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CROSSREGION_RULE_INFO.java
@@ -0,0 +1,83 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.EM_CATEGORY_TYPE;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+/**
+ * @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 POINTCOORDINATE[]			stuDetectRegion= (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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CROSS_LIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CROSS_LIST_INFO.java
new file mode 100644
index 0000000..374d990
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CROSS_LIST_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CROWD_STAT_DATA.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CROWD_STAT_DATA.java
new file mode 100644
index 0000000..6f1a27d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CROWD_STAT_DATA.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_ACCESS_CALL_LIFT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_ACCESS_CALL_LIFT.java
new file mode 100644
index 0000000..8d37c19
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_ACCESS_CALL_LIFT.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_CALLLIFT_CMD}
+*/
+public			int					emCallLiftCmd;
+/** 
+呼叫电梯的方式 {@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_LOWRATEWPAN_ADD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_LOWRATEWPAN_ADD.java
new file mode 100644
index 0000000..55f74cb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_LOWRATEWPAN_ADD.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_LOWRATEWPAN_REMOVE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_LOWRATEWPAN_REMOVE.java
new file mode 100644
index 0000000..76f11eb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_LOWRATEWPAN_REMOVE.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_LOWRATEWPAN_REMOVEALL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_LOWRATEWPAN_REMOVEALL.java
new file mode 100644
index 0000000..e818323
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_LOWRATEWPAN_REMOVEALL.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_SET_BYPASS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_SET_BYPASS.java
new file mode 100644
index 0000000..b015128
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CTRL_SET_BYPASS.java
@@ -0,0 +1,53 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CUSTOM_DEV_VIDEO_INPUTS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CUSTOM_DEV_VIDEO_INPUTS.java
new file mode 100644
index 0000000..78b7a03
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CUSTOM_DEV_VIDEO_INPUTS.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CUSTOM_MEASURE_TEMPER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CUSTOM_MEASURE_TEMPER.java
new file mode 100644
index 0000000..05d3936
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CUSTOM_MEASURE_TEMPER.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CUSTOM_PROJECTS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CUSTOM_PROJECTS_INFO.java
new file mode 100644
index 0000000..d7daede
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CUSTOM_PROJECTS_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CYCLE_PLAN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CYCLE_PLAN_INFO.java
new file mode 100644
index 0000000..7d20a82
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CYCLE_PLAN_INFO.java
@@ -0,0 +1,69 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CYCLE_SETTINGS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CYCLE_SETTINGS_INFO.java
new file mode 100644
index 0000000..c1a316c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_CYCLE_SETTINGS_INFO.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DAY_ACTIONS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DAY_ACTIONS_INFO.java
new file mode 100644
index 0000000..7bdbb2c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DAY_ACTIONS_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DAY_ACTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DAY_ACTION_INFO.java
new file mode 100644
index 0000000..d5cc7fb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DAY_ACTION_INFO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DAY_PLANS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DAY_PLANS_INFO.java
new file mode 100644
index 0000000..eaf937a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DAY_PLANS_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DAY_PLAN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DAY_PLAN_INFO.java
new file mode 100644
index 0000000..be77992
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DAY_PLAN_INFO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DELETE_VEHICLE_CONDITION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DELETE_VEHICLE_CONDITION_INFO.java
new file mode 100644
index 0000000..2952fa6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DELETE_VEHICLE_CONDITION_INFO.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETAIL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETAIL_INFO.java
new file mode 100644
index 0000000..e415bc6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETAIL_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETECTOR_CONFIG_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETECTOR_CONFIG_INFO.java
new file mode 100644
index 0000000..4e7b9a0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETECTOR_CONFIG_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETECTOR_SETTING_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETECTOR_SETTING_INFO.java
new file mode 100644
index 0000000..e9c6967
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETECTOR_SETTING_INFO.java
@@ -0,0 +1,45 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETECT_BIG_PIC_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETECT_BIG_PIC_INFO.java
new file mode 100644
index 0000000..2eec99a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETECT_BIG_PIC_INFO.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETECT_BIG_PIC_INFO_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETECT_BIG_PIC_INFO_EX.java
new file mode 100644
index 0000000..20874f1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DETECT_BIG_PIC_INFO_EX.java
@@ -0,0 +1,87 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_COORDINATE_TYPE}
+     */
+    public int emCoordinateType;
+    /**
+     * 目标类型 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVICE_FAULT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVICE_FAULT_INFO.java
new file mode 100644
index 0000000..00b3e4a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVICE_FAULT_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVICE_STORAGE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVICE_STORAGE_INFO.java
new file mode 100644
index 0000000..893abb1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVICE_STORAGE_INFO.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVSTATUS_NET_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVSTATUS_NET_INFO.java
new file mode 100644
index 0000000..3008344
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVSTATUS_NET_INFO.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.NET_EM_ETH_STATE}
+*/
+public			int					emEthState;
+/** 
+蜂窝网络实际使用流量,单位:MB
+*/
+public			int					n3Gflux;
+/** 
+网络实际使用时长,单位:分钟
+*/
+public			int					n3GfluxByTime;
+/** 
+网络连接状态 {@link com.ruoyi.device.dhsdk.lib.enumeration.NET_EM_ETH_STATE}
+*/
+public			int					emWifiState;
+/** 
+蜂窝网络连接状态 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVSTATUS_POWER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVSTATUS_POWER_INFO.java
new file mode 100644
index 0000000..6a0c817
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVSTATUS_POWER_INFO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.NET_EM_POWER_TYPE}
+*/
+public			int					emPowerType;
+
+public NET_DEVSTATUS_POWER_INFO(){
+}
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVSTATUS_SIM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVSTATUS_SIM_INFO.java
new file mode 100644
index 0000000..8a5b6ae
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEVSTATUS_SIM_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_ANTI_COUNTERFEIT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_ANTI_COUNTERFEIT_INFO.java
new file mode 100644
index 0000000..59fce35
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_ANTI_COUNTERFEIT_INFO.java
@@ -0,0 +1,114 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_CIGARETTE_CASE_DETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_CIGARETTE_CASE_DETECTION_INFO.java
new file mode 100644
index 0000000..33e3936
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_CIGARETTE_CASE_DETECTION_INFO.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_COLLISION_CONFLICT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_COLLISION_CONFLICT_INFO.java
new file mode 100644
index 0000000..8def626
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_COLLISION_CONFLICT_INFO.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_CROSSLINE_STAT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_CROSSLINE_STAT_INFO.java
new file mode 100644
index 0000000..930b59c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_CROSSLINE_STAT_INFO.java
@@ -0,0 +1,82 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_FACERECOGNITION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_FACERECOGNITION_INFO.java
new file mode 100644
index 0000000..068e9d7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_FACERECOGNITION_INFO.java
@@ -0,0 +1,16 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+//DEV_EVENT_FACERECOGNITION_INFO 对象的改版
+public class NET_DEV_EVENT_FACERECOGNITION_INFO extends NetSDKLib.SdkStructure {
+    public   int                 nChannelID;                                 // 通道号
+    public byte[] 					szName = new byte[128];                                 // 事件名称
+    public int                 nEventID;                                   // 事件ID
+    public NetSDKLib.NET_TIME_EX UTC;                                        // 事件发生的时间
+    public NetSDKLib.DH_MSG_OBJECT stuObject;                                  // 检测到的物体
+    public int                bGlobalScenePic;                            // 全景图是否存在
+    public NetSDKLib.NET_PIC_INFO stuGlobalScenePicInfo;                      // 全景图片信息
+    public int					nRetCandidatesExNum;						// 当前人脸匹配到的候选对象数量实际返回值
+    public NetSDKLib.CANDIDATE_INFOEX[] stuCandidatesEx=new NetSDKLib.CANDIDATE_INFOEX[3];      					// 当前人脸匹配到的候选对象信息扩展
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_GARBAGE_PLASTICBAG_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_GARBAGE_PLASTICBAG_INFO.java
new file mode 100644
index 0000000..c269fd5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_GARBAGE_PLASTICBAG_INFO.java
@@ -0,0 +1,96 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_ILLEGAL_CARRIAGE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_ILLEGAL_CARRIAGE_INFO.java
new file mode 100644
index 0000000..8aed4b2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_ILLEGAL_CARRIAGE_INFO.java
@@ -0,0 +1,122 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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;
+
+	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();
+		}
+		int size = new PointerSize().size();
+		szReserved = new byte[1936 - size];// 保留字节
+	}
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_POSITION_SNAP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_POSITION_SNAP_INFO.java
new file mode 100644
index 0000000..355a747
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_POSITION_SNAP_INFO.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_REGIONNUM_STAT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_REGIONNUM_STAT_INFO.java
new file mode 100644
index 0000000..161f6e7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_REGIONNUM_STAT_INFO.java
@@ -0,0 +1,82 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_REMOTE_APPROVAL_ALARM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_REMOTE_APPROVAL_ALARM_INFO.java
new file mode 100644
index 0000000..ccc0e60
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_REMOTE_APPROVAL_ALARM_INFO.java
@@ -0,0 +1,90 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_TEMPERATURE_ALARM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_TEMPERATURE_ALARM_INFO.java
new file mode 100644
index 0000000..d6f8f20
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_TEMPERATURE_ALARM_INFO.java
@@ -0,0 +1,47 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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();
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[1024];
+
+    public NET_DEV_EVENT_TEMPERATURE_ALARM_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_TRAFFIC_ACCELERATION_RAPID_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_TRAFFIC_ACCELERATION_RAPID_INFO.java
new file mode 100644
index 0000000..183d9d8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_TRAFFIC_ACCELERATION_RAPID_INFO.java
@@ -0,0 +1,116 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_TRAFFIC_TURN_SHARP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_TRAFFIC_TURN_SHARP_INFO.java
new file mode 100644
index 0000000..ccdcd99
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_EVENT_TRAFFIC_TURN_SHARP_INFO.java
@@ -0,0 +1,112 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_IO_STAT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_IO_STAT_INFO.java
new file mode 100644
index 0000000..8e69c25
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_IO_STAT_INFO.java
@@ -0,0 +1,81 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_NETWORK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_NETWORK_INFO.java
new file mode 100644
index 0000000..b0ae08d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DEV_NETWORK_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DIAGNOSIS_DRAMATIC_DETECTIONRESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DIAGNOSIS_DRAMATIC_DETECTIONRESULT.java
new file mode 100644
index 0000000..91bd6a1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DIAGNOSIS_DRAMATIC_DETECTIONRESULT.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DIAL_DETECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DIAL_DETECT.java
new file mode 100644
index 0000000..e694885
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DIAL_DETECT.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  表盘检测结果 
+* @date 2022/06/28 19:44:55
+*/
+public class NET_DIAL_DETECT extends NetSDKLib.SdkStructure {
+/** 
+表盘状态 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DISPLAY_OPTIONS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DISPLAY_OPTIONS_INFO.java
new file mode 100644
index 0000000..59e0119
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DISPLAY_OPTIONS_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DOOR_DETECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DOOR_DETECT.java
new file mode 100644
index 0000000..968bf2b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DOOR_DETECT.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  箱门检测结果 
+* @date 2022/06/28 19:44:55
+*/
+public class NET_DOOR_DETECT extends NetSDKLib.SdkStructure {
+/** 
+箱门状态 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DOWNLOADFILE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DOWNLOADFILE_INFO.java
new file mode 100644
index 0000000..29fada6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DOWNLOADFILE_INFO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DOWNLOADFILE_OPTIONS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DOWNLOADFILE_OPTIONS_INFO.java
new file mode 100644
index 0000000..1990ef2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DOWNLOADFILE_OPTIONS_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DOWNLOAD_CONDITION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DOWNLOAD_CONDITION_INFO.java
new file mode 100644
index 0000000..4e9233c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DOWNLOAD_CONDITION_INFO.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DVR_VIDEOITEM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DVR_VIDEOITEM.java
new file mode 100644
index 0000000..b462e85
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DVR_VIDEOITEM.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DVR_VIDEOOSD_CFG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DVR_VIDEOOSD_CFG.java
new file mode 100644
index 0000000..92613a7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DVR_VIDEOOSD_CFG.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DVR_VIDEO_WIDGET.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DVR_VIDEO_WIDGET.java
new file mode 100644
index 0000000..b727968
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_DVR_VIDEO_WIDGET.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR_INFO.java
new file mode 100644
index 0000000..fef8c6e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ENCODE_AUDIO_COMPRESSION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ENCODE_AUDIO_COMPRESSION_INFO.java
new file mode 100644
index 0000000..a50afaa
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ENCODE_AUDIO_COMPRESSION_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ENCODE_AUDIO_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ENCODE_AUDIO_INFO.java
new file mode 100644
index 0000000..82c723b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ENCODE_AUDIO_INFO.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ENCODE_VIDEO_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ENCODE_VIDEO_INFO.java
new file mode 100644
index 0000000..eb4564d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ENCODE_VIDEO_INFO.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.NET_EM_FORMAT_TYPE;
+import com.ruoyi.device.dhsdk.lib.enumeration.NET_EM_IMAGE_QUALITY;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EPIDEMIC_AREA_EXPERIENCE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EPIDEMIC_AREA_EXPERIENCE.java
new file mode 100644
index 0000000..b8d84a4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EPIDEMIC_AREA_EXPERIENCE.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_AREAR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_AREAR_INFO.java
new file mode 100644
index 0000000..9403025
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_AREAR_INFO.java
@@ -0,0 +1,15 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_GPS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_GPS_INFO.java
new file mode 100644
index 0000000..c598b50
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_GPS_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_HANDLER_VOICE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_HANDLER_VOICE.java
new file mode 100644
index 0000000..8d38d17
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_HANDLER_VOICE.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_IMAGE_OFFSET_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_IMAGE_OFFSET_INFO.java
new file mode 100644
index 0000000..91071ba
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_IMAGE_OFFSET_INFO.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_INFO_EXTEND.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_INFO_EXTEND.java
new file mode 100644
index 0000000..d52518c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_INFO_EXTEND.java
@@ -0,0 +1,49 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_RADAR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_RADAR_INFO.java
new file mode 100644
index 0000000..a6bce15
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_RADAR_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_TRAFFIC_OCCUPYING_THEPATH_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_TRAFFIC_OCCUPYING_THEPATH_INFO.java
new file mode 100644
index 0000000..8025920
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EVENT_TRAFFIC_OCCUPYING_THEPATH_INFO.java
@@ -0,0 +1,102 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EXAM_RECORDING_PLAN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EXAM_RECORDING_PLAN_INFO.java
new file mode 100644
index 0000000..9da21ec
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EXAM_RECORDING_PLAN_INFO.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EXTRA_PLATES.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EXTRA_PLATES.java
new file mode 100644
index 0000000..0de5ec2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_EXTRA_PLATES.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_NET_PLATE_TYPE}
+*/
+public			int					emCategory;
+/** 
+车牌颜色 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACECOMPARISON_PTZ_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACECOMPARISON_PTZ_INFO.java
new file mode 100644
index 0000000..5f51af7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACECOMPARISON_PTZ_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACEDETECT_IMAGE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACEDETECT_IMAGE_INFO.java
new file mode 100644
index 0000000..c45905a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACEDETECT_IMAGE_INFO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACERECOGNITION_PERSON_INFOEX2.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACERECOGNITION_PERSON_INFOEX2.java
new file mode 100644
index 0000000..06bfb79
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACERECOGNITION_PERSON_INFOEX2.java
@@ -0,0 +1,60 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACE_FEATURE_VECTOR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACE_FEATURE_VECTOR_INFO.java
new file mode 100644
index 0000000..df9fdc4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACE_FEATURE_VECTOR_INFO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACE_ORIGINAL_SIZE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACE_ORIGINAL_SIZE.java
new file mode 100644
index 0000000..a83230f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACE_ORIGINAL_SIZE.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACE_PIC_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACE_PIC_INFO.java
new file mode 100644
index 0000000..33ae32d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FACE_PIC_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FAN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FAN_INFO.java
new file mode 100644
index 0000000..8bdeef3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FAN_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FAN_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FAN_STATUS.java
new file mode 100644
index 0000000..9f4e6b6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FAN_STATUS.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FFCPERIOD_RANGE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FFCPERIOD_RANGE.java
new file mode 100644
index 0000000..60bbb28
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FFCPERIOD_RANGE.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FILE_PROCESS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FILE_PROCESS_INFO.java
new file mode 100644
index 0000000..19a5001
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FILE_PROCESS_INFO.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABINET_AUTOARM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABINET_AUTOARM.java
new file mode 100644
index 0000000..2e58438
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABINET_AUTOARM.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABINET_MESSAGE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABINET_MESSAGE.java
new file mode 100644
index 0000000..490ebb3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABINET_MESSAGE.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABINET_VAULTDOOR.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABINET_VAULTDOOR.java
new file mode 100644
index 0000000..4d0b236
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABINET_VAULTDOOR.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABINET_WORKTIME.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABINET_WORKTIME.java
new file mode 100644
index 0000000..710f8a9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABINET_WORKTIME.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABIN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABIN_INFO.java
new file mode 100644
index 0000000..b42f00e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINANCIAL_CABIN_INFO.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIND_VEHICLE_CONDITION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIND_VEHICLE_CONDITION.java
new file mode 100644
index 0000000..4d9c8ca
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIND_VEHICLE_CONDITION.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINGERPRINT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINGERPRINT_INFO.java
new file mode 100644
index 0000000..51fb8dc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FINGERPRINT_INFO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIREPROOF_CLOTHES.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIREPROOF_CLOTHES.java
new file mode 100644
index 0000000..cf03432
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIREPROOF_CLOTHES.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 防火衣相关属性状态信息
+ * @date 2022/11/01 19:47:04
+ */
+public class NET_FIREPROOF_CLOTHES extends NetSDKLib.SdkStructure {
+	/**
+	 * 是否穿着防火衣 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_FIREPROOF_CLOTHES_STATE}
+	 */
+	public int emHasFireProofClothes;
+	/**
+	 * 防火衣颜色 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRE_DETECTION_POSITION_PARAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRE_DETECTION_POSITION_PARAM.java
new file mode 100644
index 0000000..72e6825
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRE_DETECTION_POSITION_PARAM.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRE_DETECTION_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRE_DETECTION_RULE_INFO.java
new file mode 100644
index 0000000..846363c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRE_DETECTION_RULE_INFO.java
@@ -0,0 +1,49 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.lib.enumeration.NET_EM_SCENEDETECTION_TYPE;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+/**
+ * @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 POINTCOORDINATE[]				stuDetectRegion=(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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRE_EXTINGUISHER_CATEGORY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRE_EXTINGUISHER_CATEGORY_INFO.java
new file mode 100644
index 0000000..c77ea8f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRE_EXTINGUISHER_CATEGORY_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRE_EXTINGUISHER_OBJECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRE_EXTINGUISHER_OBJECT_INFO.java
new file mode 100644
index 0000000..9bbd2fd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRE_EXTINGUISHER_OBJECT_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRING_GPS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRING_GPS_INFO.java
new file mode 100644
index 0000000..550b48d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FIRING_GPS_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FLOORS_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FLOORS_EX.java
new file mode 100644
index 0000000..e7c6005
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FLOORS_EX.java
@@ -0,0 +1,13 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FLOORS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FLOORS_INFO.java
new file mode 100644
index 0000000..d252ce1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FLOORS_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FOG_DETECTION_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FOG_DETECTION_RULE_INFO.java
new file mode 100644
index 0000000..7e70215
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FOG_DETECTION_RULE_INFO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+/**
+ * @description 事件类型EVENT_IVS_FOG_DETECTION(起雾检测) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.EM_FOG_LEVEL;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FOLLOW_CAR_ALARM_CUSTOM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FOLLOW_CAR_ALARM_CUSTOM_INFO.java
new file mode 100644
index 0000000..fada732
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FOLLOW_CAR_ALARM_CUSTOM_INFO.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FOLLOW_CAR_ALARM_IMAGE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FOLLOW_CAR_ALARM_IMAGE_INFO.java
new file mode 100644
index 0000000..88e4920
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FOLLOW_CAR_ALARM_IMAGE_INFO.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FUEL_DISPENSER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FUEL_DISPENSER_INFO.java
new file mode 100644
index 0000000..0cd5285
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_FUEL_DISPENSER_INFO.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GETSUMMARY_CROWD_LIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GETSUMMARY_CROWD_LIST_INFO.java
new file mode 100644
index 0000000..63fd52b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GETSUMMARY_CROWD_LIST_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GETSUMMARY_CROWD_STAT_DATA.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GETSUMMARY_CROWD_STAT_DATA.java
new file mode 100644
index 0000000..4d1fe86
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GETSUMMARY_CROWD_STAT_DATA.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GETSUMMARY_REGION_LIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GETSUMMARY_REGION_LIST_INFO.java
new file mode 100644
index 0000000..56c170a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GETSUMMARY_REGION_LIST_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GETSUMMARY_REGION_PEOPLE_LIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GETSUMMARY_REGION_PEOPLE_LIST_INFO.java
new file mode 100644
index 0000000..d1b90dd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GETSUMMARY_REGION_PEOPLE_LIST_INFO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GET_ACCESSORY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GET_ACCESSORY_INFO.java
new file mode 100644
index 0000000..b31ca6d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GET_ACCESSORY_INFO.java
@@ -0,0 +1,45 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GET_CONDITION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GET_CONDITION_INFO.java
new file mode 100644
index 0000000..f5f50dc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GET_CONDITION_INFO.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GLASSES_RELATED_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GLASSES_RELATED_INFO.java
new file mode 100644
index 0000000..17f9d39
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GLASSES_RELATED_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 眼镜相关属性状态信息
+ * @date 2022/11/01 19:47:17
+ */
+public class NET_GLASSES_RELATED_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 眼镜检测规则中报警类型 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GLOVE_ATTRIBUTE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GLOVE_ATTRIBUTE.java
new file mode 100644
index 0000000..637dc77
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GLOVE_ATTRIBUTE.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_COMPLIANCE_STATE;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GPS_INFO_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GPS_INFO_EX.java
new file mode 100644
index 0000000..268b00a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GPS_INFO_EX.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GPS_POSITION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GPS_POSITION.java
new file mode 100644
index 0000000..f8201d7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GPS_POSITION.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GUIDE_MODULE_MEASURE_MODE_PARAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GUIDE_MODULE_MEASURE_MODE_PARAM.java
new file mode 100644
index 0000000..4ef26f8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_GUIDE_MODULE_MEASURE_MODE_PARAM.java
@@ -0,0 +1,78 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HEALTH_CODE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HEALTH_CODE_INFO.java
new file mode 100644
index 0000000..9e2833b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HEALTH_CODE_INFO.java
@@ -0,0 +1,53 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HISTORY_NON_MOTOR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HISTORY_NON_MOTOR_INFO.java
new file mode 100644
index 0000000..798fbae
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HISTORY_NON_MOTOR_INFO.java
@@ -0,0 +1,59 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HISTORY_TRAFFIC_CAR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HISTORY_TRAFFIC_CAR_INFO.java
new file mode 100644
index 0000000..4a15e8d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HISTORY_TRAFFIC_CAR_INFO.java
@@ -0,0 +1,159 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.NET_SUNSHADE_STATE}
+     */
+    public int emSunShade;
+    /**
+     * 副驾驶遮阳板状态 {@link com.ruoyi.device.dhsdk.lib.enumeration.NET_SUNSHADE_STATE}
+     */
+    public int emSubSeatSunShade;
+    /**
+     * 卡片数量
+     */
+    public int nCardCount;
+    /**
+     * 主驾驶安全带 {@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HKIMAGESERVER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HKIMAGESERVER_INFO.java
new file mode 100644
index 0000000..2bf896e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HKIMAGESERVER_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HSJC_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HSJC_INFO.java
new file mode 100644
index 0000000..6af5ca4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HSJC_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HUMAN_FEATURE_VECTOR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HUMAN_FEATURE_VECTOR_INFO.java
new file mode 100644
index 0000000..86739d2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HUMAN_FEATURE_VECTOR_INFO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HUMAN_TEMPERATURE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HUMAN_TEMPERATURE_INFO.java
new file mode 100644
index 0000000..151059e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_HUMAN_TEMPERATURE_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IDCARD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IDCARD_INFO.java
new file mode 100644
index 0000000..0d39ef5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IDCARD_INFO.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IMAGE_COMPARE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IMAGE_COMPARE_INFO.java
new file mode 100644
index 0000000..aad8fa8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IMAGE_COMPARE_INFO.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IMAGE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IMAGE_INFO.java
new file mode 100644
index 0000000..d305b94
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IMAGE_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  图片信息 
+* @date 2022/06/28 19:24:08
+*/
+public class NET_IMAGE_INFO extends NetSDKLib.SdkStructure {
+/** 
+图片类型 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IMAGE_INFO_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IMAGE_INFO_EX.java
new file mode 100644
index 0000000..e08fc38
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IMAGE_INFO_EX.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IMAGE_INFO_EX2.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IMAGE_INFO_EX2.java
new file mode 100644
index 0000000..2572a4e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IMAGE_INFO_EX2.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INFRARED_MEASURE_MODE_PARAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INFRARED_MEASURE_MODE_PARAM.java
new file mode 100644
index 0000000..67958a0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INFRARED_MEASURE_MODE_PARAM.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INSIDE_OBJECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INSIDE_OBJECT.java
new file mode 100644
index 0000000..4814e77
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INSIDE_OBJECT.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+
+/**
+ * 物品类型
+ *
+ * @author : 260611
+ * @since : Created in 2021/10/19 09:19
+ */
+public class NET_INSIDE_OBJECT extends NetSDKLib.SdkStructure {
+
+    /**
+     *  物品危险等级
+     */
+    public int					emDangerGrade;
+
+    /**
+     *  物品类型 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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INSIDE_SUB_TOTAL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INSIDE_SUB_TOTAL_INFO.java
new file mode 100644
index 0000000..a7cfa7a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INSIDE_SUB_TOTAL_INFO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INSULATOR_DETECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INSULATOR_DETECT.java
new file mode 100644
index 0000000..b5b63a0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INSULATOR_DETECT.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  绝缘子检测结果 
+* @date 2022/06/28 19:44:56
+*/
+public class NET_INSULATOR_DETECT extends NetSDKLib.SdkStructure {
+/** 
+绝缘子状态 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTELLIPARKING_OPENAREA_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTELLIPARKING_OPENAREA_INFO.java
new file mode 100644
index 0000000..96c4303
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTELLIPARKING_OPENAREA_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTELLIPARKING_PLANAREA_IDINFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTELLIPARKING_PLANAREA_IDINFO.java
new file mode 100644
index 0000000..594aacd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTELLIPARKING_PLANAREA_IDINFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTELLIPARKING_PLANAREA_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTELLIPARKING_PLANAREA_INFO.java
new file mode 100644
index 0000000..9b7a7eb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTELLIPARKING_PLANAREA_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTELLI_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTELLI_INFO.java
new file mode 100644
index 0000000..072a5c5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTELLI_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTER_LOCK_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTER_LOCK_CAPS.java
new file mode 100644
index 0000000..a10da37
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_INTER_LOCK_CAPS.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ACCESSCONTROL_CAPTURE_CMD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ACCESSCONTROL_CAPTURE_CMD.java
new file mode 100644
index 0000000..21dab16
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ACCESSCONTROL_CAPTURE_CMD.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ACCESSCONTROL_CAPTURE_NEWCARD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ACCESSCONTROL_CAPTURE_NEWCARD.java
new file mode 100644
index 0000000..998a311
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ACCESSCONTROL_CAPTURE_NEWCARD.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_AC_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_AC_CAPS.java
new file mode 100644
index 0000000..f74eca5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_AC_CAPS.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ADAPTIVE_DOWNLOAD_BY_TIME.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ADAPTIVE_DOWNLOAD_BY_TIME.java
new file mode 100644
index 0000000..2ccc92a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ADAPTIVE_DOWNLOAD_BY_TIME.java
@@ -0,0 +1,96 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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 NET_IN_ADAPTIVE_DOWNLOAD_BY_TIME() {
+        dwSize = this.size();
+    }
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ADD_ALARM_USER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ADD_ALARM_USER.java
new file mode 100644
index 0000000..42d667b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ADD_ALARM_USER.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ADD_COURSE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ADD_COURSE.java
new file mode 100644
index 0000000..cb7e95e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ADD_COURSE.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ADD_REC_BAK_RST_REMOTE_TASK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ADD_REC_BAK_RST_REMOTE_TASK.java
new file mode 100644
index 0000000..24f5840
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ADD_REC_BAK_RST_REMOTE_TASK.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ASYNC_ADD_CUSTOM_DEVICE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ASYNC_ADD_CUSTOM_DEVICE.java
new file mode 100644
index 0000000..c5271fe
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ASYNC_ADD_CUSTOM_DEVICE.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_BACKUP_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_BACKUP_STATE.java
new file mode 100644
index 0000000..e041689
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_BACKUP_STATE.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.sun.jna.Callback;
+import com.sun.jna.Pointer;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_CROWDDISTRI_MAP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_CROWDDISTRI_MAP_INFO.java
new file mode 100644
index 0000000..7e2af7e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_CROWDDISTRI_MAP_INFO.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_CUSTOM_SNAP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_CUSTOM_SNAP_INFO.java
new file mode 100644
index 0000000..28641d9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_CUSTOM_SNAP_INFO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_GATE_POPULATION_STATISTICS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_GATE_POPULATION_STATISTICS_INFO.java
new file mode 100644
index 0000000..10d68d8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_GATE_POPULATION_STATISTICS_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+import com.ruoyi.device.dhsdk.lib.callback.securityCheck.fNotifyPopulationStatisticsInfo;
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_GYRO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_GYRO.java
new file mode 100644
index 0000000..f267f1d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_GYRO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_LOWRATEWPAN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_LOWRATEWPAN.java
new file mode 100644
index 0000000..e787ce2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_LOWRATEWPAN.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_RADAR_RFIDCARD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_RADAR_RFIDCARD_INFO.java
new file mode 100644
index 0000000..17a78ff
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_RADAR_RFIDCARD_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_SCADA_DATA_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_SCADA_DATA_INFO.java
new file mode 100644
index 0000000..50dbc5a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_SCADA_DATA_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_TRAFFICLIGHT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_TRAFFICLIGHT_INFO.java
new file mode 100644
index 0000000..0b78d5b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_TRAFFICLIGHT_INFO.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_TRANSMIT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_TRANSMIT_INFO.java
new file mode 100644
index 0000000..fa9a035
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_TRANSMIT_INFO.java
@@ -0,0 +1,46 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_VIDEOSTAT_HEATMAP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_VIDEOSTAT_HEATMAP.java
new file mode 100644
index 0000000..a126331
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_VIDEOSTAT_HEATMAP.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_VIDEOSTAT_STREAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_VIDEOSTAT_STREAM.java
new file mode 100644
index 0000000..2923ebd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_VIDEOSTAT_STREAM.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC.java
new file mode 100644
index 0000000..612af96
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_VIDEO_STATISTICS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_VIDEO_STATISTICS.java
new file mode 100644
index 0000000..e0db0cc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ATTACH_VIDEO_STATISTICS.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_AUDIO_DECODE_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_AUDIO_DECODE_CAPS.java
new file mode 100644
index 0000000..93b62a1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_AUDIO_DECODE_CAPS.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CAMERASTATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CAMERASTATE.java
new file mode 100644
index 0000000..836b586
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CAMERASTATE.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CLEAR_PRIVACY_MASKING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CLEAR_PRIVACY_MASKING.java
new file mode 100644
index 0000000..fcc3714
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CLEAR_PRIVACY_MASKING.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_ADD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_ADD.java
new file mode 100644
index 0000000..ef63116
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_ADD.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_DELETE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_DELETE.java
new file mode 100644
index 0000000..6f2929f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_DELETE.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_GET.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_GET.java
new file mode 100644
index 0000000..0139da1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_GET.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_MODIFY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_MODIFY.java
new file mode 100644
index 0000000..7ba3a0b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_MODIFY.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_GET_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_GET_INFO.java
new file mode 100644
index 0000000..103521a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_GET_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_GET_LOCKINFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_GET_LOCKINFO.java
new file mode 100644
index 0000000..155375b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_GET_LOCKINFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_LOCK_CONTROL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_LOCK_CONTROL.java
new file mode 100644
index 0000000..de3480d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_LOCK_CONTROL.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_SET_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_SET_INFO.java
new file mode 100644
index 0000000..dea69e5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_SET_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_UPDATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_UPDATE_INFO.java
new file mode 100644
index 0000000..b2312bb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSECOMPOSITE_UPDATE_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSERECORD_GETINFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSERECORD_GETINFO.java
new file mode 100644
index 0000000..3003555
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSERECORD_GETINFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSERECORD_GET_TIME.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSERECORD_GET_TIME.java
new file mode 100644
index 0000000..62b70b9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSERECORD_GET_TIME.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSERECORD_SETINFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSERECORD_SETINFO.java
new file mode 100644
index 0000000..7f78697
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSERECORD_SETINFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSERECORD_UPDATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSERECORD_UPDATE_INFO.java
new file mode 100644
index 0000000..7a02f1a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_COURSERECORD_UPDATE_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CREATE_GROUP_FOR_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CREATE_GROUP_FOR_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..93eb9f6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CREATE_GROUP_FOR_VEHICLE_REG_DB.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CREATE_TRANSMIT_TUNNEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CREATE_TRANSMIT_TUNNEL.java
new file mode 100644
index 0000000..40e2382
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CREATE_TRANSMIT_TUNNEL.java
@@ -0,0 +1,52 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+CLIENT_CreateTransmitTunnel 接口输入参数
+*/
+public class NET_IN_CREATE_TRANSMIT_TUNNEL extends NetSDKLib.SdkStructure {
+/** 
+/< 结构体大小
+*/
+public			int					dwSize;
+/** 
+/< 代理类型  {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_TRANSMIT_PROXY_TYPE }
+*/
+public			int					emProxyType;
+/** 
+/< 代理模式  {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CREATE_WORKSUIT_COMPARE_GROUP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CREATE_WORKSUIT_COMPARE_GROUP.java
new file mode 100644
index 0000000..e8cb20e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CREATE_WORKSUIT_COMPARE_GROUP.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CREAT_SUB_BUSINESS_MDL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CREAT_SUB_BUSINESS_MDL_INFO.java
new file mode 100644
index 0000000..7deb8a2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CREAT_SUB_BUSINESS_MDL_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+CLIENT_CreateSubBusinessModule 接口输入参数
+*/
+public class NET_IN_CREAT_SUB_BUSINESS_MDL_INFO extends NetSDKLib.SdkStructure {
+/** 
+/< 结构体大小
+*/
+public			int					dwSize;
+/** 
+/< 连接方式  {@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CTRL_LOWRATEWPAN_ACCESSORY_PARAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CTRL_LOWRATEWPAN_ACCESSORY_PARAM.java
new file mode 100644
index 0000000..64b8703
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_CTRL_LOWRATEWPAN_ACCESSORY_PARAM.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_ALARM_USER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_ALARM_USER.java
new file mode 100644
index 0000000..1cb95e9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_ALARM_USER.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_COURSE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_COURSE.java
new file mode 100644
index 0000000..d9b3e61
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_COURSE.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_GROUP_FROM_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_GROUP_FROM_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..f5583e6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_GROUP_FROM_VEHICLE_REG_DB.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_PRIVACY_MASKING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_PRIVACY_MASKING.java
new file mode 100644
index 0000000..2381ad5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_PRIVACY_MASKING.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_VEHICLE_FROM_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_VEHICLE_FROM_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..3c32bc6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_VEHICLE_FROM_VEHICLE_REG_DB.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_WORKSUIT_BY_SOURCEUID.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_WORKSUIT_BY_SOURCEUID.java
new file mode 100644
index 0000000..d100d36
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_WORKSUIT_BY_SOURCEUID.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_WORKSUIT_COMPARE_GROUP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_WORKSUIT_COMPARE_GROUP.java
new file mode 100644
index 0000000..e736a26
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELETE_WORKSUIT_COMPARE_GROUP.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELIVER_USER_PICTURE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELIVER_USER_PICTURE.java
new file mode 100644
index 0000000..06dd510
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DELIVER_USER_PICTURE.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..ca303bd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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 NET_IN_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB(){
+    this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DETACH_TRANSMIT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DETACH_TRANSMIT_INFO.java
new file mode 100644
index 0000000..afbfed5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DETACH_TRANSMIT_INFO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DEV_IO_STATS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DEV_IO_STATS.java
new file mode 100644
index 0000000..4acd10f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DEV_IO_STATS.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DOFIND_FACERECONGNITION_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DOFIND_FACERECONGNITION_EX.java
new file mode 100644
index 0000000..e7484db
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DOFIND_FACERECONGNITION_EX.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DOWNLOAD_BYFILE_SELFADAPT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DOWNLOAD_BYFILE_SELFADAPT.java
new file mode 100644
index 0000000..e4220df
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DOWNLOAD_BYFILE_SELFADAPT.java
@@ -0,0 +1,106 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_REAL_DATA_TYPE;
+import com.sun.jna.Pointer;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DOWNLOAD_MULTI_FILE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DOWNLOAD_MULTI_FILE.java
new file mode 100644
index 0000000..56a3236
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DOWNLOAD_MULTI_FILE.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_DOWNLOAD_FILE_TYPE;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DOWNLOAD_PIECE_FILE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DOWNLOAD_PIECE_FILE.java
new file mode 100644
index 0000000..86b0a0d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DOWNLOAD_PIECE_FILE.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DO_FIND_DETAIL_CLUSTER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DO_FIND_DETAIL_CLUSTER.java
new file mode 100644
index 0000000..1cbe476
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DO_FIND_DETAIL_CLUSTER.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DO_FIND_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DO_FIND_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..39e6f25
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DO_FIND_VEHICLE_REG_DB.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DO_FIND_WATERDATA_STAT_SERVER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DO_FIND_WATERDATA_STAT_SERVER_INFO.java
new file mode 100644
index 0000000..582d4e1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_DO_FIND_WATERDATA_STAT_SERVER_INFO.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ENCODE_CFG_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ENCODE_CFG_CAPS.java
new file mode 100644
index 0000000..74bf032
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_ENCODE_CFG_CAPS.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO.java
new file mode 100644
index 0000000..705a59d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO.java
@@ -0,0 +1,63 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_FIND_GROUP_FROM_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_FIND_GROUP_FROM_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..7b59f19
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_FIND_GROUP_FROM_VEHICLE_REG_DB.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_FIND_REC_BAK_RST_TASK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_FIND_REC_BAK_RST_TASK.java
new file mode 100644
index 0000000..e54c152
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_FIND_REC_BAK_RST_TASK.java
@@ -0,0 +1,48 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_FIND_WORKSUIT_COMPARE_GROUP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_FIND_WORKSUIT_COMPARE_GROUP.java
new file mode 100644
index 0000000..879cd8e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_FIND_WORKSUIT_COMPARE_GROUP.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GETFACEEIGEN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GETFACEEIGEN_INFO.java
new file mode 100644
index 0000000..6677267
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GETFACEEIGEN_INFO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GETSUMMARY_CROWDDISTRI_MAP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GETSUMMARY_CROWDDISTRI_MAP_INFO.java
new file mode 100644
index 0000000..8eb1e7a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GETSUMMARY_CROWDDISTRI_MAP_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_ALARMMODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_ALARMMODE.java
new file mode 100644
index 0000000..bc5e61d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_ALARMMODE.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CABINET_STATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CABINET_STATE_INFO.java
new file mode 100644
index 0000000..d149986
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CABINET_STATE_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CAMERA_CFG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CAMERA_CFG.java
new file mode 100644
index 0000000..14ed2da
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CAMERA_CFG.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CAMERA_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CAMERA_INFO.java
new file mode 100644
index 0000000..37f386b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CAMERA_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CHANNELS_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CHANNELS_STATE.java
new file mode 100644
index 0000000..4bb35a5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CHANNELS_STATE.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CHANNEL_CFG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CHANNEL_CFG.java
new file mode 100644
index 0000000..b1ee310
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CHANNEL_CFG.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CHANNEL_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CHANNEL_STATE.java
new file mode 100644
index 0000000..020117f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CHANNEL_STATE.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CLUSTER_STATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CLUSTER_STATE_INFO.java
new file mode 100644
index 0000000..f5bcd5f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CLUSTER_STATE_INFO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_COURSE_LOGIC_CHANNEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_COURSE_LOGIC_CHANNEL.java
new file mode 100644
index 0000000..09f834f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_COURSE_LOGIC_CHANNEL.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_COURSE_RECORD_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_COURSE_RECORD_MODE.java
new file mode 100644
index 0000000..f24642b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_COURSE_RECORD_MODE.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CUSTOMINFO_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CUSTOMINFO_CAPS.java
new file mode 100644
index 0000000..b2a6091
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_CUSTOMINFO_CAPS.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEFAULT_REAL_CHANNEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEFAULT_REAL_CHANNEL.java
new file mode 100644
index 0000000..b4b5e03
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEFAULT_REAL_CHANNEL.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEVICESERIALNO_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEVICESERIALNO_INFO.java
new file mode 100644
index 0000000..18d8aff
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEVICESERIALNO_INFO.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEVICETYPE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEVICETYPE_INFO.java
new file mode 100644
index 0000000..f15cc7d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEVICETYPE_INFO.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEVICE_AII_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEVICE_AII_INFO.java
new file mode 100644
index 0000000..c516da5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEVICE_AII_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEVICE_ETH_BAND_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEVICE_ETH_BAND_INFO.java
new file mode 100644
index 0000000..531d040
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEVICE_ETH_BAND_INFO.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEV_STORAGE_SMART_VALUE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEV_STORAGE_SMART_VALUE.java
new file mode 100644
index 0000000..9bbd306
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DEV_STORAGE_SMART_VALUE.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO.java
new file mode 100644
index 0000000..1d441e8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_ELEVATOR_WORK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_ELEVATOR_WORK_INFO.java
new file mode 100644
index 0000000..580ddc3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_ELEVATOR_WORK_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_FILE_INFO_BY_PATH_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_FILE_INFO_BY_PATH_INFO.java
new file mode 100644
index 0000000..605133f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_FILE_INFO_BY_PATH_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_FINANCIAL_CABIN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_FINANCIAL_CABIN_INFO.java
new file mode 100644
index 0000000..58bd88f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_FINANCIAL_CABIN_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_GLOBAL_PARAMETER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_GLOBAL_PARAMETER.java
new file mode 100644
index 0000000..778e43f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_GLOBAL_PARAMETER.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_HEATMAPS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_HEATMAPS_INFO.java
new file mode 100644
index 0000000..38cf6e1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_HEATMAPS_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_INPUT_CHANNEL_MEDIA.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_INPUT_CHANNEL_MEDIA.java
new file mode 100644
index 0000000..fc930dd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_INPUT_CHANNEL_MEDIA.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_POPULATION_STATISTICS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_POPULATION_STATISTICS.java
new file mode 100644
index 0000000..f243ae3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_POPULATION_STATISTICS.java
@@ -0,0 +1,15 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_PRIVACY_MASKING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_PRIVACY_MASKING.java
new file mode 100644
index 0000000..730aa88
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_PRIVACY_MASKING.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_PRIVACY_MASKING_ENABLE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_PRIVACY_MASKING_ENABLE.java
new file mode 100644
index 0000000..f3a5126
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_PRIVACY_MASKING_ENABLE.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_PTZ_WASH_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_PTZ_WASH_INFO.java
new file mode 100644
index 0000000..18ec76e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_PTZ_WASH_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_REAL_PREVIEW_CHANNEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_REAL_PREVIEW_CHANNEL.java
new file mode 100644
index 0000000..ca51bf1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_REAL_PREVIEW_CHANNEL.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_RECORD_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_RECORD_STATE.java
new file mode 100644
index 0000000..028b940
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_RECORD_STATE.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_RUNNING_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_RUNNING_INFO.java
new file mode 100644
index 0000000..3e0fd03
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_RUNNING_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_RUNNING_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_RUNNING_MODE.java
new file mode 100644
index 0000000..d7ec75f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_RUNNING_MODE.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_SMOKE_DATA.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_SMOKE_DATA.java
new file mode 100644
index 0000000..bf663bb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_SMOKE_DATA.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_TEMPERATUREEX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_TEMPERATUREEX.java
new file mode 100644
index 0000000..8c476a9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_TEMPERATUREEX.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_VAULTDOOR_STATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_VAULTDOOR_STATE_INFO.java
new file mode 100644
index 0000000..d0f5a5a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_VAULTDOOR_STATE_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_VIDEOSTAT_HEATMAP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_VIDEOSTAT_HEATMAP.java
new file mode 100644
index 0000000..ec70123
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_VIDEOSTAT_HEATMAP.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_HEATMAP_TYPE}
+     */
+    public int emHeatMapType;
+    public NET_IN_GET_VIDEOSTAT_HEATMAP(){
+        this.dwSize=size();
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_XRAY_MULTILEVEL_DETECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_XRAY_MULTILEVEL_DETECT_INFO.java
new file mode 100644
index 0000000..5857fc4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GET_XRAY_MULTILEVEL_DETECT_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GOTO_PRIVACY_MASKING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GOTO_PRIVACY_MASKING.java
new file mode 100644
index 0000000..c645b50
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_GOTO_PRIVACY_MASKING.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_IVSEVENT_FIND_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_IVSEVENT_FIND_INFO.java
new file mode 100644
index 0000000..adef969
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_IVSEVENT_FIND_INFO.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_IVSEVENT_NEXTFIND_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_IVSEVENT_NEXTFIND_INFO.java
new file mode 100644
index 0000000..89ba1d6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_IVSEVENT_NEXTFIND_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MAKE_TOKEN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MAKE_TOKEN.java
new file mode 100644
index 0000000..7dc775d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MAKE_TOKEN.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MANUAL_TEST.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MANUAL_TEST.java
new file mode 100644
index 0000000..839f52e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MANUAL_TEST.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MINI_RADAR_ALARMPOINTINFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MINI_RADAR_ALARMPOINTINFO.java
new file mode 100644
index 0000000..021b7d7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MINI_RADAR_ALARMPOINTINFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_ALARM_USER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_ALARM_USER.java
new file mode 100644
index 0000000..801c54e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_ALARM_USER.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_ALARM_USER_PASSWORD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_ALARM_USER_PASSWORD.java
new file mode 100644
index 0000000..0d70936
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_ALARM_USER_PASSWORD.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_COURSE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_COURSE.java
new file mode 100644
index 0000000..0cefc2e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_COURSE.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_GROUP_FOR_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_GROUP_FOR_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..8e5f320
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_GROUP_FOR_VEHICLE_REG_DB.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_PARKINGRECORD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_PARKINGRECORD_INFO.java
new file mode 100644
index 0000000..dfa6096
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_PARKINGRECORD_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..7a5e6ba
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MONITORWALL_GET_COLL_SCHD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MONITORWALL_GET_COLL_SCHD.java
new file mode 100644
index 0000000..4e69818
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MONITORWALL_GET_COLL_SCHD.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MONITORWALL_GET_ENABLE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MONITORWALL_GET_ENABLE.java
new file mode 100644
index 0000000..710b60d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MONITORWALL_GET_ENABLE.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.NET_MONITORWALL_OPERATE_TYPE;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MONITORWALL_SET_COLL_SCHD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MONITORWALL_SET_COLL_SCHD.java
new file mode 100644
index 0000000..fe0ddda
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MONITORWALL_SET_COLL_SCHD.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MONITORWALL_SET_ENABLE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MONITORWALL_SET_ENABLE.java
new file mode 100644
index 0000000..fe28ad4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MONITORWALL_SET_ENABLE.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.NET_MONITORWALL_OPERATE_TYPE;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MOVE_DIRECTLY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MOVE_DIRECTLY_INFO.java
new file mode 100644
index 0000000..58077f9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MOVE_DIRECTLY_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_CLOSE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_CLOSE_INFO.java
new file mode 100644
index 0000000..4f564f2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_CLOSE_INFO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_LOCATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_LOCATE_INFO.java
new file mode 100644
index 0000000..da3b4da
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_LOCATE_INFO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_OPEN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_OPEN_INFO.java
new file mode 100644
index 0000000..f6a053d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_OPEN_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_RECTLOCATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_RECTLOCATE_INFO.java
new file mode 100644
index 0000000..c15d988
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_RECTLOCATE_INFO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO.java
new file mode 100644
index 0000000..6a1a2e3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_TRACK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_TRACK_INFO.java
new file mode 100644
index 0000000..f83993f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MSGROUP_TRACK_INFO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MULTIFACE_DETECT_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MULTIFACE_DETECT_STATE.java
new file mode 100644
index 0000000..bf75bbc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MULTIFACE_DETECT_STATE.java
@@ -0,0 +1,45 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MULTI_APPEND_TO_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MULTI_APPEND_TO_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..d36c238
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MULTI_APPEND_TO_VEHICLE_REG_DB.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MULTI_APPEND_TO_WORKSUIT_GROUP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MULTI_APPEND_TO_WORKSUIT_GROUP.java
new file mode 100644
index 0000000..e325f17
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_MULTI_APPEND_TO_WORKSUIT_GROUP.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_NAS_DIRECTORY_GET_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_NAS_DIRECTORY_GET_INFO.java
new file mode 100644
index 0000000..7880a82
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_NAS_DIRECTORY_GET_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_NETAPP_GET_MOBILE_INTERFACE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_NETAPP_GET_MOBILE_INTERFACE.java
new file mode 100644
index 0000000..7217b60
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_NETAPP_GET_MOBILE_INTERFACE.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PACKAGE_STATISTICS_BYGRADE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PACKAGE_STATISTICS_BYGRADE.java
new file mode 100644
index 0000000..f9b32f9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PACKAGE_STATISTICS_BYGRADE.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  通过危险物等级统计的包裹信息
+ * @date 2021/7/1
+ */
+public class NET_IN_PACKAGE_STATISTICS_BYGRADE extends NetSDKLib.SdkStructure{
+
+
+    /**
+     *  危险物等级,参考枚举{@link com.ruoyi.device.dhsdk.lib.NetSDKLib.EM_DANGER_GRADE_TYPE }
+     */
+        public int emGrade;										// 危险物等级
+        public int				nCount;											// 危险物数量
+        public byte[]			byReserved=new byte[64];									// 预留字段
+
+
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PACKAGE_STATISTICS_BYTYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PACKAGE_STATISTICS_BYTYPE.java
new file mode 100644
index 0000000..5348526
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PACKAGE_STATISTICS_BYTYPE.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+/**
+ * @author 291189
+ * @version 1.0
+ * @description   按危险类型统计的信息
+ * @date 2021/7/1
+ */
+public class NET_IN_PACKAGE_STATISTICS_BYTYPE extends NetSDKLib.SdkStructure{
+
+    /**
+     *  危险物等级,参考枚举{@link com.ruoyi.device.dhsdk.lib.NetSDKLib.EM_INSIDE_OBJECT_TYPE }
+     */
+    public int emType;  	// 危险物类型
+    public int nCount;      // 危险物数量
+    public byte[] byReserved=new byte[64]; 	// 预留字段
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PERSON_INFO_INPUT_RESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PERSON_INFO_INPUT_RESULT.java
new file mode 100644
index 0000000..3e3eea8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PERSON_INFO_INPUT_RESULT.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PRE_UPLOAD_REMOTE_FILE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PRE_UPLOAD_REMOTE_FILE.java
new file mode 100644
index 0000000..0f69d4a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PRE_UPLOAD_REMOTE_FILE.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_GET_CENTER_GPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_GET_CENTER_GPS.java
new file mode 100644
index 0000000..ff4805f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_GET_CENTER_GPS.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_GET_HFOV_VALUE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_GET_HFOV_VALUE.java
new file mode 100644
index 0000000..c3db636
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_GET_HFOV_VALUE.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_GET_VFOV_VALUE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_GET_VFOV_VALUE.java
new file mode 100644
index 0000000..d34de40
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_GET_VFOV_VALUE.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_MOVEABSOLUTELY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_MOVEABSOLUTELY_INFO.java
new file mode 100644
index 0000000..80fd92c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_MOVEABSOLUTELY_INFO.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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;
+
+    /**
+     * 字节对齐
+     */
+    public byte[] byReserved = new byte[512];
+
+    public NET_IN_PTZBASE_MOVEABSOLUTELY_INFO() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO.java
new file mode 100644
index 0000000..a6e294e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZ_CURRENT_FOV_VALUE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZ_CURRENT_FOV_VALUE.java
new file mode 100644
index 0000000..7905b91
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZ_CURRENT_FOV_VALUE.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZ_STATUS_PROC.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZ_STATUS_PROC.java
new file mode 100644
index 0000000..9e81e77
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PTZ_STATUS_PROC.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PUSH_ANALYSE_PICTURE_FILE_BYRULE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PUSH_ANALYSE_PICTURE_FILE_BYRULE.java
new file mode 100644
index 0000000..fd386a1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_PUSH_ANALYSE_PICTURE_FILE_BYRULE.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSE.java
new file mode 100644
index 0000000..2939cb9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSE.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILE.java
new file mode 100644
index 0000000..3045a19
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILE.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILECLOSE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILECLOSE.java
new file mode 100644
index 0000000..62d6bfc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILECLOSE.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILEOPEN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILEOPEN.java
new file mode 100644
index 0000000..9498e26
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILEOPEN.java
@@ -0,0 +1,45 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_COURSE_LOCK_TYPE;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_COURSE_RECORD_TYPE;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSE_CLOSE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSE_CLOSE.java
new file mode 100644
index 0000000..5c3794a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSE_CLOSE.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSE_OPEN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSE_OPEN.java
new file mode 100644
index 0000000..89d1c3c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_QUERY_COURSE_OPEN.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_ALARMPOINTINFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_ALARMPOINTINFO.java
new file mode 100644
index 0000000..69b8e0c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_ALARMPOINTINFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_CALCULATEREALSIZE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_CALCULATEREALSIZE.java
new file mode 100644
index 0000000..b64e663
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_CALCULATEREALSIZE.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_GETCAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_GETCAPS.java
new file mode 100644
index 0000000..8ba2379
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_GETCAPS.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_GETSTATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_GETSTATUS.java
new file mode 100644
index 0000000..666e48d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_GETSTATUS.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_GET_RFID_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_GET_RFID_MODE.java
new file mode 100644
index 0000000..43cf4f7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_GET_RFID_MODE.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_MANUAL_TRACK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_MANUAL_TRACK.java
new file mode 100644
index 0000000..35ef919
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_MANUAL_TRACK.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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 NET_IN_RADAR_MANUAL_TRACK() {
+		this.dwSize = this.size();
+	}
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_SETCALIBRATION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_SETCALIBRATION.java
new file mode 100644
index 0000000..7889ce8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_SETCALIBRATION.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_SET_RFID_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_SET_RFID_MODE.java
new file mode 100644
index 0000000..95a7159
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_SET_RFID_MODE.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_STARTUPGRADE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_STARTUPGRADE.java
new file mode 100644
index 0000000..446bff0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_RADAR_STARTUPGRADE.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_REMOTE_SLEEP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_REMOTE_SLEEP.java
new file mode 100644
index 0000000..28d5674
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_REMOTE_SLEEP.java
@@ -0,0 +1,16 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCADA_GET_ATTRIBUTE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCADA_GET_ATTRIBUTE_INFO.java
new file mode 100644
index 0000000..be817c9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCADA_GET_ATTRIBUTE_INFO.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCENICSPOT_GETCAPS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCENICSPOT_GETCAPS_INFO.java
new file mode 100644
index 0000000..0ad4555
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCENICSPOT_GETCAPS_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCENICSPOT_GETPOINTINFOS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCENICSPOT_GETPOINTINFOS_INFO.java
new file mode 100644
index 0000000..4efe900
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCENICSPOT_GETPOINTINFOS_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCENICSPOT_SETPOINTINFO_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCENICSPOT_SETPOINTINFO_INFO.java
new file mode 100644
index 0000000..7bb2004
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCENICSPOT_SETPOINTINFO_INFO.java
@@ -0,0 +1,84 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.NET_EM_SHAPE_TYPE;
+
+import static com.ruoyi.device.dhsdk.lib.NetSDKLib.MAX_COMMON_STRING_64;
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCENICSPOT_TURNTOPOINT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCENICSPOT_TURNTOPOINT_INFO.java
new file mode 100644
index 0000000..d08e523
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SCENICSPOT_TURNTOPOINT_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SECURITYGATE_ATTACH_ALARM_STATISTICS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SECURITYGATE_ATTACH_ALARM_STATISTICS.java
new file mode 100644
index 0000000..b380e30
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SECURITYGATE_ATTACH_ALARM_STATISTICS.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_2DCODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_2DCODE.java
new file mode 100644
index 0000000..03f51f3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_2DCODE.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_ALARMMODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_ALARMMODE.java
new file mode 100644
index 0000000..b8b38b8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_ALARMMODE.java
@@ -0,0 +1,48 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_BACKUP_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_BACKUP_MODE.java
new file mode 100644
index 0000000..19caa06
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_BACKUP_MODE.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_BLIND_REAL_CHANNEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_BLIND_REAL_CHANNEL.java
new file mode 100644
index 0000000..910defa
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_BLIND_REAL_CHANNEL.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_BYPASSMODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_BYPASSMODE.java
new file mode 100644
index 0000000..0f49c5e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_BYPASSMODE.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_CAMERA_CFG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_CAMERA_CFG.java
new file mode 100644
index 0000000..97e9b75
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_CAMERA_CFG.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_CHANNEL_CFG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_CHANNEL_CFG.java
new file mode 100644
index 0000000..0eab071
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_CHANNEL_CFG.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_CONSUME_RESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_CONSUME_RESULT.java
new file mode 100644
index 0000000..708ba92
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_CONSUME_RESULT.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_COURSE_RECORD_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_COURSE_RECORD_MODE.java
new file mode 100644
index 0000000..60ac813
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_COURSE_RECORD_MODE.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_COURSE_RECORD_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_COURSE_RECORD_STATE.java
new file mode 100644
index 0000000..793ed72
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_COURSE_RECORD_STATE.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO.java
new file mode 100644
index 0000000..b9be148
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_OPENKEY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_OPENKEY_INFO.java
new file mode 100644
index 0000000..92cb55d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_OPENKEY_INFO.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_OPEN_CODE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_OPEN_CODE_INFO.java
new file mode 100644
index 0000000..2f52fda
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_OPEN_CODE_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_TEMP_USERID_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_TEMP_USERID_INFO.java
new file mode 100644
index 0000000..5022556
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_TEMP_USERID_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_EXAM_RECORDING_PLANS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_EXAM_RECORDING_PLANS.java
new file mode 100644
index 0000000..4a8a5a5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_EXAM_RECORDING_PLANS.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_GLOBAL_PARAMETER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_GLOBAL_PARAMETER.java
new file mode 100644
index 0000000..7a02d8d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_GLOBAL_PARAMETER.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_IVSEVENT_PARSE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_IVSEVENT_PARSE_INFO.java
new file mode 100644
index 0000000..af8bbba
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_IVSEVENT_PARSE_INFO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_OUTPUT_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_OUTPUT_STATE.java
new file mode 100644
index 0000000..74310d2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_OUTPUT_STATE.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_OUTPUT_TYPE}
+	 */
+	public int emType;
+	/**
+	 * emType= EM_OUTPUT_TYPE_SIREN时表示警号号 emType= EM_OUTPUT_TYPE_ALARMOUT时表示通道号
+	 */
+	public int nChannel;
+	/**
+	 * null
+	 */
+	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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PARKINGRULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PARKINGRULE_INFO.java
new file mode 100644
index 0000000..00cc5f9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PARKINGRULE_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PARKINGSPACE_STATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PARKINGSPACE_STATE_INFO.java
new file mode 100644
index 0000000..605ebd9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PARKINGSPACE_STATE_INFO.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PARK_CONTROL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PARK_CONTROL_INFO.java
new file mode 100644
index 0000000..3bcec06
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PARK_CONTROL_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_POLLING_CONFIG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_POLLING_CONFIG.java
new file mode 100644
index 0000000..d9ab6b1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_POLLING_CONFIG.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PRIVACY_MASKING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PRIVACY_MASKING.java
new file mode 100644
index 0000000..477e3b7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PRIVACY_MASKING.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PRIVACY_MASKING_ENABLE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PRIVACY_MASKING_ENABLE.java
new file mode 100644
index 0000000..bd3c3be
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PRIVACY_MASKING_ENABLE.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PTZ_WASH_POSISTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PTZ_WASH_POSISTION_INFO.java
new file mode 100644
index 0000000..6dee80f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_PTZ_WASH_POSISTION_INFO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_RUNNING_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_RUNNING_MODE.java
new file mode 100644
index 0000000..2cfb47f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_RUNNING_MODE.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_TRANSMITTUNNEL_PARAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_TRANSMITTUNNEL_PARAM.java
new file mode 100644
index 0000000..3bcff8f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_TRANSMITTUNNEL_PARAM.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_XRAY_MULTILEVEL_DETECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_XRAY_MULTILEVEL_DETECT_INFO.java
new file mode 100644
index 0000000..c6fda99
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SET_XRAY_MULTILEVEL_DETECT_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SMOKE_REMOTE_REBOOT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SMOKE_REMOTE_REBOOT_INFO.java
new file mode 100644
index 0000000..caba3f3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SMOKE_REMOTE_REBOOT_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SNAP_BY_EVENT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SNAP_BY_EVENT.java
new file mode 100644
index 0000000..2bbc787
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SNAP_BY_EVENT.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_EVENT_IVS;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SPLIT_GET_OSD_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SPLIT_GET_OSD_EX.java
new file mode 100644
index 0000000..768066c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SPLIT_GET_OSD_EX.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SPLIT_SET_HIGHLIGHT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SPLIT_SET_HIGHLIGHT.java
new file mode 100644
index 0000000..7e43ec9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SPLIT_SET_HIGHLIGHT.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SPLIT_SET_OSD_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SPLIT_SET_OSD_EX.java
new file mode 100644
index 0000000..b61ec93
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_SPLIT_SET_OSD_EX.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STARTMULTIFIND_FACERECONGNITION_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STARTMULTIFIND_FACERECONGNITION_EX.java
new file mode 100644
index 0000000..dd5697d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STARTMULTIFIND_FACERECONGNITION_EX.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STARTSERACH_DEVICE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STARTSERACH_DEVICE.java
new file mode 100644
index 0000000..d04e414
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STARTSERACH_DEVICE.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_BACKUP_TASK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_BACKUP_TASK_INFO.java
new file mode 100644
index 0000000..2537406
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_BACKUP_TASK_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_BACKUP_TASK_SESSION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_BACKUP_TASK_SESSION.java
new file mode 100644
index 0000000..1831bfa
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_BACKUP_TASK_SESSION.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_FIND_DETAIL_CLUSTER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_FIND_DETAIL_CLUSTER.java
new file mode 100644
index 0000000..4c1f433
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_FIND_DETAIL_CLUSTER.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_FIND_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_FIND_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..31d5192
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_FIND_VEHICLE_REG_DB.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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_IN_START_FIND_VEHICLE_REG_DB(){
+        dwSize=this.size();
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_FIND_WATERDATA_STAT_SERVER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_FIND_WATERDATA_STAT_SERVER_INFO.java
new file mode 100644
index 0000000..1cb2dde
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_FIND_WATERDATA_STAT_SERVER_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_REDIRECT_SERVICE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_REDIRECT_SERVICE.java
new file mode 100644
index 0000000..59d50e9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_REDIRECT_SERVICE.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_SUBLINK_LISTEN_SERVER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_SUBLINK_LISTEN_SERVER.java
new file mode 100644
index 0000000..f2b867e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_SUBLINK_LISTEN_SERVER.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_TALK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_TALK_INFO.java
new file mode 100644
index 0000000..acb8fdf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_START_TALK_INFO.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STOP_FIND_DETAIL_CLUSTER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STOP_FIND_DETAIL_CLUSTER_INFO.java
new file mode 100644
index 0000000..2fc677b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STOP_FIND_DETAIL_CLUSTER_INFO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STOP_FIND_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STOP_FIND_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..e8a4cab
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STOP_FIND_VEHICLE_REG_DB.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STOP_FIND_WATERDATA_STAT_SERVER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STOP_FIND_WATERDATA_STAT_SERVER_INFO.java
new file mode 100644
index 0000000..699fff7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STOP_FIND_WATERDATA_STAT_SERVER_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STORAGE_DEV_INFOS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STORAGE_DEV_INFOS.java
new file mode 100644
index 0000000..210f39e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_STORAGE_DEV_INFOS.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TALK_SEND_DATA_FILE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TALK_SEND_DATA_FILE.java
new file mode 100644
index 0000000..be21b5d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TALK_SEND_DATA_FILE.java
@@ -0,0 +1,65 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TALK_SEND_DATA_STREAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TALK_SEND_DATA_STREAM.java
new file mode 100644
index 0000000..432bd3c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TALK_SEND_DATA_STREAM.java
@@ -0,0 +1,53 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_ATTACH.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_ATTACH.java
new file mode 100644
index 0000000..4843130
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_ATTACH.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_DOFIND_HISTORYDATA.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_DOFIND_HISTORYDATA.java
new file mode 100644
index 0000000..7df9e1a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_DOFIND_HISTORYDATA.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_GET.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_GET.java
new file mode 100644
index 0000000..d685c76
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_GET.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_GET_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_GET_CAPS.java
new file mode 100644
index 0000000..616bead
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_GET_CAPS.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_GET_DEVLIST.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_GET_DEVLIST.java
new file mode 100644
index 0000000..b9286da
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_GET_DEVLIST.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_GET_NETSTATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_GET_NETSTATE.java
new file mode 100644
index 0000000..ba13aa9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_GET_NETSTATE.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_ADDDEVICE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_ADDDEVICE.java
new file mode 100644
index 0000000..f0e29d8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_ADDDEVICE.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_ADDRULE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_ADDRULE.java
new file mode 100644
index 0000000..c9eef8b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_ADDRULE.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_AIRSWITHFIND.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_AIRSWITHFIND.java
new file mode 100644
index 0000000..ed0615f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_AIRSWITHFIND.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_AIRSWITHRESET.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_AIRSWITHRESET.java
new file mode 100644
index 0000000..3f62d3d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_AIRSWITHRESET.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_CHARGECLEAR.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_CHARGECLEAR.java
new file mode 100644
index 0000000..6672328
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_CHARGECLEAR.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_CURRENTSTATUSGET.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_CURRENTSTATUSGET.java
new file mode 100644
index 0000000..8973c55
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_CURRENTSTATUSGET.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_DELDEVICE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_DELDEVICE.java
new file mode 100644
index 0000000..a152e78
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_DELDEVICE.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_DELRULE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_DELRULE.java
new file mode 100644
index 0000000..d97c153
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_DELRULE.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_DEVREPLACE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_DEVREPLACE.java
new file mode 100644
index 0000000..4a0a9a0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_DEVREPLACE.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_ENABLE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_ENABLE.java
new file mode 100644
index 0000000..f52ee9b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_ENABLE.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_LEAKCURTPOST.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_LEAKCURTPOST.java
new file mode 100644
index 0000000..fb6b332
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_LEAKCURTPOST.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_LEAKCURTPOSTASYNC.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_LEAKCURTPOSTASYNC.java
new file mode 100644
index 0000000..bfcadbf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_LEAKCURTPOSTASYNC.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_MODRULE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_MODRULE.java
new file mode 100644
index 0000000..a305346
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_MODRULE.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_OFFLINELOGCLEAN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_OFFLINELOGCLEAN.java
new file mode 100644
index 0000000..c347dcb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_OFFLINELOGCLEAN.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_QUERULE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_QUERULE.java
new file mode 100644
index 0000000..840f628
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_QUERULE.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_VALVECONTROL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_VALVECONTROL.java
new file mode 100644
index 0000000..675ecd1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SERVICE_VALVECONTROL.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SET.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SET.java
new file mode 100644
index 0000000..277a457
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_SET.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_START_HISTORYDATA.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_START_HISTORYDATA.java
new file mode 100644
index 0000000..3b728f0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_THINGS_START_HISTORYDATA.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFICDOFINDSTAT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFICDOFINDSTAT.java
new file mode 100644
index 0000000..2efe5f0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFICDOFINDSTAT.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFICSTARTFINDSTAT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFICSTARTFINDSTAT.java
new file mode 100644
index 0000000..99556c2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFICSTARTFINDSTAT.java
@@ -0,0 +1,61 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_GRANULARITY_STARTFIND_TYPE}
+	 */
+	public int emGranularity;
+	/**
+	 * 统计方向查询条件 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFIC_RADAR_GET_OBJECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFIC_RADAR_GET_OBJECT_INFO.java
new file mode 100644
index 0000000..218a917
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFIC_RADAR_GET_OBJECT_INFO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFIC_SNAP_RADAR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFIC_SNAP_RADAR_INFO.java
new file mode 100644
index 0000000..8241ea4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFIC_SNAP_RADAR_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFIC_SNAP_STROBE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFIC_SNAP_STROBE_INFO.java
new file mode 100644
index 0000000..bc1b20c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRAFFIC_SNAP_STROBE_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRANSFER_SUBLINK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRANSFER_SUBLINK_INFO.java
new file mode 100644
index 0000000..e9038ef
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRANSFER_SUBLINK_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+CLIENT_TransferSubLinkInfo 接口输入参数
+*/
+public class NET_IN_TRANSFER_SUBLINK_INFO extends NetSDKLib.SdkStructure {
+/** 
+/< 结构体大小
+*/
+public			int					dwSize;
+/** 
+/< 连接方式 {@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRANSMIT_CMD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRANSMIT_CMD.java
new file mode 100644
index 0000000..0bd865b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_TRANSMIT_CMD.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_UNIFIEDINFOCOLLECT_GET_DEVSTATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_UNIFIEDINFOCOLLECT_GET_DEVSTATUS.java
new file mode 100644
index 0000000..c735b7e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_UNIFIEDINFOCOLLECT_GET_DEVSTATUS.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_UPLOAD_UPPACKING_CHECK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_UPLOAD_UPPACKING_CHECK_INFO.java
new file mode 100644
index 0000000..c0fb6da
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_UPLOAD_UPPACKING_CHECK_INFO.java
@@ -0,0 +1,35 @@
+ package com.ruoyi.device.dhsdk.lib.structure;
+ import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+ import com.sun.jna.Pointer;
+
+ import java.awt.*;
+
+ /**
+  * @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();
+}
+}
+
+
+/**
+ DWORD					      dwSize;							// 结构体大小
+ int							  nImageDataLen;					// 图片二进制数据缓存大小
+ char*						  pImageData;                       // 图片二进制数据块
+ UNPACKING_CHECK_INFO          stuCheckInfo;                     // 开包检查信息
+
+ */
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_VIDEOIN_DAYNIGHT_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_VIDEOIN_DAYNIGHT_CAPS.java
new file mode 100644
index 0000000..f7f8e01
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_VIDEOIN_DAYNIGHT_CAPS.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+/**
+ * @author 47081
+ * @desc
+ * @version 1.0.0
+ * @date 2021/4/9
+ */
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_VIDEO_ENCODE_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_VIDEO_ENCODE_CAPS.java
new file mode 100644
index 0000000..034a2fc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_VIDEO_ENCODE_CAPS.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_WATERDATA_STAT_SERVER_GETCAPS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_WATERDATA_STAT_SERVER_GETCAPS_INFO.java
new file mode 100644
index 0000000..3a5a3b2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_WATERDATA_STAT_SERVER_GETCAPS_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_WATERDATA_STAT_SERVER_GETDATA_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_WATERDATA_STAT_SERVER_GETDATA_INFO.java
new file mode 100644
index 0000000..a7eed1c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_WATERDATA_STAT_SERVER_GETDATA_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_WLAN_ACCESSPOINT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_WLAN_ACCESSPOINT.java
new file mode 100644
index 0000000..f7d182d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_WLAN_ACCESSPOINT.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_XRAY_ATTACH_PACKAGE_STATISTICS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_XRAY_ATTACH_PACKAGE_STATISTICS.java
new file mode 100644
index 0000000..5cb9383
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_XRAY_ATTACH_PACKAGE_STATISTICS.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_XRAY_PACKAGE_STATISTICS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_XRAY_PACKAGE_STATISTICS_INFO.java
new file mode 100644
index 0000000..81cc6b9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IN_XRAY_PACKAGE_STATISTICS_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ISCSI_TARGET.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ISCSI_TARGET.java
new file mode 100644
index 0000000..fc0e92e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ISCSI_TARGET.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IVSEVENT_EVENT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IVSEVENT_EVENT_INFO.java
new file mode 100644
index 0000000..8d756a6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IVSEVENT_EVENT_INFO.java
@@ -0,0 +1,45 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IVS_DIALRECOGNITION_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IVS_DIALRECOGNITION_RULE_INFO.java
new file mode 100644
index 0000000..db822fb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IVS_DIALRECOGNITION_RULE_INFO.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IVS_ELECTRICFAULT_DETECT_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IVS_ELECTRICFAULT_DETECT_RULE_INFO.java
new file mode 100644
index 0000000..46ff5d0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_IVS_ELECTRICFAULT_DETECT_RULE_INFO.java
@@ -0,0 +1,82 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LANE_LIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LANE_LIST_INFO.java
new file mode 100644
index 0000000..e1215ad
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LANE_LIST_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LANE_PLAN_LIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LANE_PLAN_LIST_INFO.java
new file mode 100644
index 0000000..22b4e84
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LANE_PLAN_LIST_INFO.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LEAKAGE_DETECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LEAKAGE_DETECT.java
new file mode 100644
index 0000000..5426d6a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LEAKAGE_DETECT.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LEFTDETECTION_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LEFTDETECTION_RULE_INFO.java
new file mode 100644
index 0000000..c6f2f0d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LEFTDETECTION_RULE_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.lib.structure.NET_CFG_SIZEFILTER_INFO;
+
+/** 事件类型 EVENT_IVS_LEFTDETECTION (物品遗留事件) 对应的规则配置 */
+public class NET_LEFTDETECTION_RULE_INFO extends SdkStructure {
+  /** 检测区域顶点数 */
+  public int nDetectRegionPoint;
+  /** 检测区域 */
+  public POINTCOORDINATE[] stuDetectRegion = (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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LIGHTINFO_CFG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LIGHTINFO_CFG.java
new file mode 100644
index 0000000..7183955
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LIGHTINFO_CFG.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LIGHTPERIODS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LIGHTPERIODS_INFO.java
new file mode 100644
index 0000000..dadd1ea
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LIGHTPERIODS_INFO.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LINK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LINK_INFO.java
new file mode 100644
index 0000000..94e64f2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LINK_INFO.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LOCAL_SERVER_NET_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LOCAL_SERVER_NET_INFO.java
new file mode 100644
index 0000000..aa51318
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LOCAL_SERVER_NET_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LOGIC_CHANNEL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LOGIC_CHANNEL_INFO.java
new file mode 100644
index 0000000..a77b900
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LOGIC_CHANNEL_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LOOPPLAYBACK_AUDIOALARM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LOOPPLAYBACK_AUDIOALARM_INFO.java
new file mode 100644
index 0000000..72af19a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_LOOPPLAYBACK_AUDIOALARM_INFO.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MANUALSNAP_PARKINGSPACE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MANUALSNAP_PARKINGSPACE_INFO.java
new file mode 100644
index 0000000..a755dab
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MANUALSNAP_PARKINGSPACE_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MASK_ATTRIBUTE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MASK_ATTRIBUTE.java
new file mode 100644
index 0000000..064a751
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MASK_ATTRIBUTE.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_COMPLIANCE_STATE;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MATCH_TWO_FACE_IN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MATCH_TWO_FACE_IN.java
new file mode 100644
index 0000000..314ea4c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MATCH_TWO_FACE_IN.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MATCH_TWO_FACE_OUT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MATCH_TWO_FACE_OUT.java
new file mode 100644
index 0000000..8016ddf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MATCH_TWO_FACE_OUT.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEDIAFILE_EXAM_PARAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEDIAFILE_EXAM_PARAM.java
new file mode 100644
index 0000000..5bc82a3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEDIAFILE_EXAM_PARAM.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEDIAFILE_GENERAL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEDIAFILE_GENERAL_INFO.java
new file mode 100644
index 0000000..efe028c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEDIAFILE_GENERAL_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEDIA_QUERY_TRAFFICCAR_PARAM_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEDIA_QUERY_TRAFFICCAR_PARAM_EX.java
new file mode 100644
index 0000000..056ea9a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEDIA_QUERY_TRAFFICCAR_PARAM_EX.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEMBERS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEMBERS_INFO.java
new file mode 100644
index 0000000..f21dfaa
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEMBERS_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEMORY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEMORY_INFO.java
new file mode 100644
index 0000000..0204226
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEMORY_INFO.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEMORY_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEMORY_STATUS.java
new file mode 100644
index 0000000..88164c7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MEMORY_STATUS.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_METAL_CORROSION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_METAL_CORROSION.java
new file mode 100644
index 0000000..5c1355f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_METAL_CORROSION.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MINI_RADAR_ALARMPOINT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MINI_RADAR_ALARMPOINT_INFO.java
new file mode 100644
index 0000000..d148d7a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MINI_RADAR_ALARMPOINT_INFO.java
@@ -0,0 +1,98 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MINI_RADAR_NOTIFY_ALARMPOINTINFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MINI_RADAR_NOTIFY_ALARMPOINTINFO.java
new file mode 100644
index 0000000..2b3f224
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MINI_RADAR_NOTIFY_ALARMPOINTINFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITORWALL_COLLECTION_NAME.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITORWALL_COLLECTION_NAME.java
new file mode 100644
index 0000000..2be25ac
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITORWALL_COLLECTION_NAME.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITORWALL_ENABLE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITORWALL_ENABLE_INFO.java
new file mode 100644
index 0000000..acf92a8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITORWALL_ENABLE_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITORWALL_NAME.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITORWALL_NAME.java
new file mode 100644
index 0000000..1de85b5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITORWALL_NAME.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITOR_WALL_DEVICE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITOR_WALL_DEVICE_INFO.java
new file mode 100644
index 0000000..71048f2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITOR_WALL_DEVICE_INFO.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITOR_WALL_OUT_MODE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITOR_WALL_OUT_MODE_INFO.java
new file mode 100644
index 0000000..15ee881
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MONITOR_WALL_OUT_MODE_INFO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MOSAIC_MASKING_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MOSAIC_MASKING_CAPS.java
new file mode 100644
index 0000000..018439a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MOSAIC_MASKING_CAPS.java
@@ -0,0 +1,46 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MSG_OBJECT_SUPPLEMENT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MSG_OBJECT_SUPPLEMENT.java
new file mode 100644
index 0000000..f20e306
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MSG_OBJECT_SUPPLEMENT.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MULTI_APPEND_EXTENDED_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MULTI_APPEND_EXTENDED_INFO.java
new file mode 100644
index 0000000..df27035
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MULTI_APPEND_EXTENDED_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MULTI_LEVEL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MULTI_LEVEL_INFO.java
new file mode 100644
index 0000000..16fc518
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_MULTI_LEVEL_INFO.java
@@ -0,0 +1,53 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  等级配置 
+* @date 2022/12/01 16:27:10
+*/
+public class NET_MULTI_LEVEL_INFO extends NetSDKLib.SdkStructure {
+/** 
+配置等级 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL}
+*/
+public			int					emLevel;
+/** 
+默认参考等级,该等级的默认配置与参考等级的默认配置一样 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NEST_DETECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NEST_DETECT.java
new file mode 100644
index 0000000..039b842
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NEST_DETECT.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NETAPP_COMMUNICATION_LIST.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NETAPP_COMMUNICATION_LIST.java
new file mode 100644
index 0000000..12fad29
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NETAPP_COMMUNICATION_LIST.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NETAPP_COMMUNICATION_LIST_CFG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NETAPP_COMMUNICATION_LIST_CFG.java
new file mode 100644
index 0000000..a34b3d2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NETAPP_COMMUNICATION_LIST_CFG.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NIGHT_ASK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NIGHT_ASK_INFO.java
new file mode 100644
index 0000000..9ebba76
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NIGHT_ASK_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NOHAT_ATTRIBUTE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NOHAT_ATTRIBUTE.java
new file mode 100644
index 0000000..da9c225
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NOHAT_ATTRIBUTE.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_COMPLIANCE_STATE;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NONMOTOR_STAY_STAT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NONMOTOR_STAY_STAT.java
new file mode 100644
index 0000000..1428996
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NONMOTOR_STAY_STAT.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NORMALHAT_ATTRIBUTE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NORMALHAT_ATTRIBUTE.java
new file mode 100644
index 0000000..7f26707
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NORMALHAT_ATTRIBUTE.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_COMPLIANCE_STATE;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NOTIFY_GYRO_DATA_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NOTIFY_GYRO_DATA_INFO.java
new file mode 100644
index 0000000..c80a6c1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NOTIFY_GYRO_DATA_INFO.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NOTIFY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NOTIFY_INFO.java
new file mode 100644
index 0000000..54eed47
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NOTIFY_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 用户组关联通知信息
+ * @date 2023/03/15 21:15:00
+ */
+public class NET_NOTIFY_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通知类型 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NOTIFY_SCADA_DATA_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NOTIFY_SCADA_DATA_INFO.java
new file mode 100644
index 0000000..752ddf9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_NOTIFY_SCADA_DATA_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OBJECT_IMAGE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OBJECT_IMAGE_INFO.java
new file mode 100644
index 0000000..b99e8e3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OBJECT_IMAGE_INFO.java
@@ -0,0 +1,47 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OBJECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OBJECT_INFO.java
new file mode 100644
index 0000000..3258dae
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OBJECT_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OBJECT_RADAR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OBJECT_RADAR_INFO.java
new file mode 100644
index 0000000..6bb99c5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OBJECT_RADAR_INFO.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPENDOOR_MATCHINFO_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPENDOOR_MATCHINFO_EX.java
new file mode 100644
index 0000000..9904eb1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPENDOOR_MATCHINFO_EX.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPEN_INTELLI_OBJECT_ATTRIBUTE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPEN_INTELLI_OBJECT_ATTRIBUTE_INFO.java
new file mode 100644
index 0000000..73da522
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPEN_INTELLI_OBJECT_ATTRIBUTE_INFO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPEN_INTELLI_OBJECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPEN_INTELLI_OBJECT_INFO.java
new file mode 100644
index 0000000..af1db23
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPEN_INTELLI_OBJECT_INFO.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPEN_INTELLI_USER_DATA_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPEN_INTELLI_USER_DATA_INFO.java
new file mode 100644
index 0000000..2c91323
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPEN_INTELLI_USER_DATA_INFO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPTIMIZES_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPTIMIZES_INFO.java
new file mode 100644
index 0000000..34a03a9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OPTIMIZES_INFO.java
@@ -0,0 +1,90 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_COVERS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_COVERS.java
new file mode 100644
index 0000000..004bd46
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_COVERS.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_COORDINATES.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_COORDINATES.java
new file mode 100644
index 0000000..91dd344
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_COORDINATES.java
@@ -0,0 +1,49 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_DIRECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_DIRECTION.java
new file mode 100644
index 0000000..46ab437
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_DIRECTION.java
@@ -0,0 +1,49 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_PATTERN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_PATTERN.java
new file mode 100644
index 0000000..d835844
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_PATTERN.java
@@ -0,0 +1,48 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_PRESET.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_PRESET.java
new file mode 100644
index 0000000..d2e8f07
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_PRESET.java
@@ -0,0 +1,47 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_RS485_DETECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_RS485_DETECT.java
new file mode 100644
index 0000000..39fe923
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_PTZ_RS485_DETECT.java
@@ -0,0 +1,49 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_TEMPERATURE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_TEMPERATURE.java
new file mode 100644
index 0000000..dca9fdd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_CFG_TEMPERATURE.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_TEMPERATURE_UNIT_EX;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_PTZZOOM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_PTZZOOM_INFO.java
new file mode 100644
index 0000000..cce6a4d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_PTZZOOM_INFO.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_USER_DEF_TITLE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_USER_DEF_TITLE.java
new file mode 100644
index 0000000..a95f1e0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OSD_USER_DEF_TITLE.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ACCESSCONTROL_CAPTURE_CMD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ACCESSCONTROL_CAPTURE_CMD.java
new file mode 100644
index 0000000..99b4175
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ACCESSCONTROL_CAPTURE_CMD.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ACCESSCONTROL_CAPTURE_NEWCARD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ACCESSCONTROL_CAPTURE_NEWCARD.java
new file mode 100644
index 0000000..c2146a1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ACCESSCONTROL_CAPTURE_NEWCARD.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_AC_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_AC_CAPS.java
new file mode 100644
index 0000000..53e4ceb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_AC_CAPS.java
@@ -0,0 +1,52 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ADAPTIVE_DOWNLOAD_BY_TIME.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ADAPTIVE_DOWNLOAD_BY_TIME.java
new file mode 100644
index 0000000..c420246
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ADAPTIVE_DOWNLOAD_BY_TIME.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ADD_ALARM_USER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ADD_ALARM_USER.java
new file mode 100644
index 0000000..6350508
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ADD_ALARM_USER.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ADD_COURSE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ADD_COURSE.java
new file mode 100644
index 0000000..c3ec086
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ADD_COURSE.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ADD_REC_BAK_RST_REMOTE_TASK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ADD_REC_BAK_RST_REMOTE_TASK.java
new file mode 100644
index 0000000..a832694
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ADD_REC_BAK_RST_REMOTE_TASK.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ASYNC_ADD_CUSTOM_DEVICE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ASYNC_ADD_CUSTOM_DEVICE.java
new file mode 100644
index 0000000..87883e6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ASYNC_ADD_CUSTOM_DEVICE.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_BACKUP_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_BACKUP_STATE.java
new file mode 100644
index 0000000..1bf6d3b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_BACKUP_STATE.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_CROWDDISTRI_MAP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_CROWDDISTRI_MAP_INFO.java
new file mode 100644
index 0000000..c22b25f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_CROWDDISTRI_MAP_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_CUSTOM_SNAP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_CUSTOM_SNAP_INFO.java
new file mode 100644
index 0000000..a94454d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_CUSTOM_SNAP_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_GATE_POPULATION_STATISTICS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_GATE_POPULATION_STATISTICS_INFO.java
new file mode 100644
index 0000000..4257fea
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_GATE_POPULATION_STATISTICS_INFO.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_GYRO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_GYRO.java
new file mode 100644
index 0000000..25b549f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_GYRO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_LOWRATEWPAN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_LOWRATEWPAN.java
new file mode 100644
index 0000000..571019a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_LOWRATEWPAN.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_RADAR_RFIDCARD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_RADAR_RFIDCARD_INFO.java
new file mode 100644
index 0000000..b0c9013
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_RADAR_RFIDCARD_INFO.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_SCADA_DATA_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_SCADA_DATA_INFO.java
new file mode 100644
index 0000000..9fc83d2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_SCADA_DATA_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_TRAFFICLIGHT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_TRAFFICLIGHT_INFO.java
new file mode 100644
index 0000000..29565f3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_TRAFFICLIGHT_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_TRANSMIT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_TRANSMIT_INFO.java
new file mode 100644
index 0000000..4aa2498
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_TRANSMIT_INFO.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_VIDEOSTAT_HEATMAP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_VIDEOSTAT_HEATMAP.java
new file mode 100644
index 0000000..f98b157
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_VIDEOSTAT_HEATMAP.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_VIDEOSTAT_STREAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_VIDEOSTAT_STREAM.java
new file mode 100644
index 0000000..5744950
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_VIDEOSTAT_STREAM.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC.java
new file mode 100644
index 0000000..d14c71d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_VIDEO_STATISTICS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_VIDEO_STATISTICS.java
new file mode 100644
index 0000000..703cec4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ATTACH_VIDEO_STATISTICS.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_AUDIO_DECODE_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_AUDIO_DECODE_CAPS.java
new file mode 100644
index 0000000..7781f91
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_AUDIO_DECODE_CAPS.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CAMERASTATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CAMERASTATE.java
new file mode 100644
index 0000000..cd85aa7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CAMERASTATE.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CLEAR_PRIVACY_MASKING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CLEAR_PRIVACY_MASKING.java
new file mode 100644
index 0000000..be87b20
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CLEAR_PRIVACY_MASKING.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_ADD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_ADD.java
new file mode 100644
index 0000000..e73f5ed
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_ADD.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_DELETE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_DELETE.java
new file mode 100644
index 0000000..cf412b5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_DELETE.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_GET.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_GET.java
new file mode 100644
index 0000000..a8f8734
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_GET.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_MODIFY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_MODIFY.java
new file mode 100644
index 0000000..5e8daf1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_MODIFY.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_GET_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_GET_INFO.java
new file mode 100644
index 0000000..d7cec8c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_GET_INFO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_GET_LOCKINFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_GET_LOCKINFO.java
new file mode 100644
index 0000000..7c77a53
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_GET_LOCKINFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_LOCK_CONTROL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_LOCK_CONTROL.java
new file mode 100644
index 0000000..8b841c6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_LOCK_CONTROL.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_SET_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_SET_INFO.java
new file mode 100644
index 0000000..6d634ea
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_SET_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_UPDATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_UPDATE_INFO.java
new file mode 100644
index 0000000..9113e8d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSECOMPOSITE_UPDATE_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSERECORD_GETINFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSERECORD_GETINFO.java
new file mode 100644
index 0000000..4454704
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSERECORD_GETINFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSERECORD_GET_TIME.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSERECORD_GET_TIME.java
new file mode 100644
index 0000000..781c7f6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSERECORD_GET_TIME.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSERECORD_SETINFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSERECORD_SETINFO.java
new file mode 100644
index 0000000..0bf91f7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSERECORD_SETINFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSERECORD_UPDATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSERECORD_UPDATE_INFO.java
new file mode 100644
index 0000000..cc259ab
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_COURSERECORD_UPDATE_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CREATE_GROUP_FOR_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CREATE_GROUP_FOR_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..bc1d994
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CREATE_GROUP_FOR_VEHICLE_REG_DB.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CREATE_TRANSMIT_TUNNEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CREATE_TRANSMIT_TUNNEL.java
new file mode 100644
index 0000000..3868e77
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CREATE_TRANSMIT_TUNNEL.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * CLIENT_CreateTransmitTunnel 接口输出参数
+ */
+public class NET_OUT_CREATE_TRANSMIT_TUNNEL extends NetSDKLib.SdkStructure {
+	/**
+	 * /< 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * /< 对上侦听端口
+	 */
+	public int nPort;
+	/**
+	 * 私有web代理访问协议 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CREATE_WORKSUIT_COMPARE_GROUP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CREATE_WORKSUIT_COMPARE_GROUP.java
new file mode 100644
index 0000000..99b0f6e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CREATE_WORKSUIT_COMPARE_GROUP.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CREAT_SUB_BUSINESS_MDL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CREAT_SUB_BUSINESS_MDL_INFO.java
new file mode 100644
index 0000000..7721b69
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_CREAT_SUB_BUSINESS_MDL_INFO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_ALARM_USER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_ALARM_USER.java
new file mode 100644
index 0000000..f05d908
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_ALARM_USER.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_COURSE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_COURSE.java
new file mode 100644
index 0000000..87d7c51
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_COURSE.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_GROUP_FROM_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_GROUP_FROM_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..31d26ec
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_GROUP_FROM_VEHICLE_REG_DB.java
@@ -0,0 +1,16 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_PRIVACY_MASKING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_PRIVACY_MASKING.java
new file mode 100644
index 0000000..01501e8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_PRIVACY_MASKING.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_VEHICLE_FROM_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_VEHICLE_FROM_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..e916750
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_VEHICLE_FROM_VEHICLE_REG_DB.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_WORKSUIT_BY_SOURCEUID.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_WORKSUIT_BY_SOURCEUID.java
new file mode 100644
index 0000000..f0db4aa
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_WORKSUIT_BY_SOURCEUID.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_WORKSUIT_COMPARE_GROUP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_WORKSUIT_COMPARE_GROUP.java
new file mode 100644
index 0000000..5292a2d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELETE_WORKSUIT_COMPARE_GROUP.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELIVER_USER_PICTURE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELIVER_USER_PICTURE.java
new file mode 100644
index 0000000..73b06b3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DELIVER_USER_PICTURE.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..c855dea
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DETACH_TRANSMIT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DETACH_TRANSMIT_INFO.java
new file mode 100644
index 0000000..fd8608b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DETACH_TRANSMIT_INFO.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DEV_IO_STATS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DEV_IO_STATS.java
new file mode 100644
index 0000000..8d8d473
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DEV_IO_STATS.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DOFIND_FACERECONGNITION_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DOFIND_FACERECONGNITION_EX.java
new file mode 100644
index 0000000..d08c681
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DOFIND_FACERECONGNITION_EX.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DOWNLOAD_BYFILE_SELFADAPT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DOWNLOAD_BYFILE_SELFADAPT.java
new file mode 100644
index 0000000..fc3f9e7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DOWNLOAD_BYFILE_SELFADAPT.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DOWNLOAD_MULTI_FILE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DOWNLOAD_MULTI_FILE.java
new file mode 100644
index 0000000..50f0ba3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DOWNLOAD_MULTI_FILE.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DOWNLOAD_PIECE_FILE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DOWNLOAD_PIECE_FILE.java
new file mode 100644
index 0000000..be66a36
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DOWNLOAD_PIECE_FILE.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DO_FIND_DETAIL_CLUSTER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DO_FIND_DETAIL_CLUSTER.java
new file mode 100644
index 0000000..d95c8a1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DO_FIND_DETAIL_CLUSTER.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DO_FIND_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DO_FIND_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..a38c266
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DO_FIND_VEHICLE_REG_DB.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DO_FIND_WATERDATA_STAT_SERVER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DO_FIND_WATERDATA_STAT_SERVER_INFO.java
new file mode 100644
index 0000000..dbc05f1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_DO_FIND_WATERDATA_STAT_SERVER_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ENCODE_CFG_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ENCODE_CFG_CAPS.java
new file mode 100644
index 0000000..9e92eb5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_ENCODE_CFG_CAPS.java
@@ -0,0 +1,75 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.GetDevCaps_Type;
+import com.ruoyi.device.dhsdk.lib.enumeration.REC_TYPE;
+import com.ruoyi.device.dhsdk.lib.enumeration.SNAP_TYPE;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO.java
new file mode 100644
index 0000000..43ab3e2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_FIND_GROUP_FROM_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_FIND_GROUP_FROM_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..d4e20ec
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_FIND_GROUP_FROM_VEHICLE_REG_DB.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_FIND_REC_BAK_RST_TASK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_FIND_REC_BAK_RST_TASK.java
new file mode 100644
index 0000000..c81bc89
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_FIND_REC_BAK_RST_TASK.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_FIND_WORKSUIT_COMPARE_GROUP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_FIND_WORKSUIT_COMPARE_GROUP.java
new file mode 100644
index 0000000..3cb6439
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_FIND_WORKSUIT_COMPARE_GROUP.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GETFACEEIGEN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GETFACEEIGEN_INFO.java
new file mode 100644
index 0000000..9a1c7fc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GETFACEEIGEN_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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*1204);          // 人脸特征值数据, 由用户申请释放, 每张照片最大为8K
+    public NET_OUT_GETFACEEIGEN_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GETSUMMARY_CROWDDISTRI_MAP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GETSUMMARY_CROWDDISTRI_MAP_INFO.java
new file mode 100644
index 0000000..ba66ff6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GETSUMMARY_CROWDDISTRI_MAP_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_ALARMMODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_ALARMMODE.java
new file mode 100644
index 0000000..8619d6d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_ALARMMODE.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CABINET_STATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CABINET_STATE_INFO.java
new file mode 100644
index 0000000..8cdb03f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CABINET_STATE_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CAMERA_CFG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CAMERA_CFG.java
new file mode 100644
index 0000000..3380d91
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CAMERA_CFG.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CAMERA_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CAMERA_INFO.java
new file mode 100644
index 0000000..bd48b5c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CAMERA_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CHANNELS_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CHANNELS_STATE.java
new file mode 100644
index 0000000..574bbc4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CHANNELS_STATE.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CHANNEL_CFG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CHANNEL_CFG.java
new file mode 100644
index 0000000..9bfbaf7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CHANNEL_CFG.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CHANNEL_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CHANNEL_STATE.java
new file mode 100644
index 0000000..2624cea
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CHANNEL_STATE.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CLUSTER_STATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CLUSTER_STATE_INFO.java
new file mode 100644
index 0000000..e0f620f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CLUSTER_STATE_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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;
+
+	public NET_OUT_GET_CLUSTER_STATE_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_COURSE_LOGIC_CHANNEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_COURSE_LOGIC_CHANNEL.java
new file mode 100644
index 0000000..f3f1b28
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_COURSE_LOGIC_CHANNEL.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_COURSE_RECORD_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_COURSE_RECORD_MODE.java
new file mode 100644
index 0000000..4538dc9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_COURSE_RECORD_MODE.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CUSTOMINFO_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CUSTOMINFO_CAPS.java
new file mode 100644
index 0000000..c71f98f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_CUSTOMINFO_CAPS.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEFAULT_REAL_CHANNEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEFAULT_REAL_CHANNEL.java
new file mode 100644
index 0000000..58c8dd0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEFAULT_REAL_CHANNEL.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEVICESERIALNO_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEVICESERIALNO_INFO.java
new file mode 100644
index 0000000..c9d9aa9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEVICESERIALNO_INFO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEVICETYPE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEVICETYPE_INFO.java
new file mode 100644
index 0000000..33c82d8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEVICETYPE_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEVICE_AII_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEVICE_AII_INFO.java
new file mode 100644
index 0000000..927fd8f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEVICE_AII_INFO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEVICE_ETH_BAND_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEVICE_ETH_BAND_INFO.java
new file mode 100644
index 0000000..6155518
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEVICE_ETH_BAND_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEV_STORAGE_SMART_VALUE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEV_STORAGE_SMART_VALUE.java
new file mode 100644
index 0000000..ce44e73
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DEV_STORAGE_SMART_VALUE.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO.java
new file mode 100644
index 0000000..2c89f46
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_ELEVATOR_WORK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_ELEVATOR_WORK_INFO.java
new file mode 100644
index 0000000..191b6b9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_ELEVATOR_WORK_INFO.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_FILE_INFO_BY_PATH_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_FILE_INFO_BY_PATH_INFO.java
new file mode 100644
index 0000000..0398f6b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_FILE_INFO_BY_PATH_INFO.java
@@ -0,0 +1,62 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_FINANCIAL_CABIN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_FINANCIAL_CABIN_INFO.java
new file mode 100644
index 0000000..048fa0e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_FINANCIAL_CABIN_INFO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_GLOBAL_PARAMETER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_GLOBAL_PARAMETER.java
new file mode 100644
index 0000000..c583de0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_GLOBAL_PARAMETER.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_HEATMAPS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_HEATMAPS_INFO.java
new file mode 100644
index 0000000..bf0f360
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_HEATMAPS_INFO.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_INPUT_CHANNEL_MEDIA.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_INPUT_CHANNEL_MEDIA.java
new file mode 100644
index 0000000..2d31b17
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_INPUT_CHANNEL_MEDIA.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.NET_ENUM_INPUT_CHANNEL_MEDIA;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_POPULATION_STATISTICS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_POPULATION_STATISTICS.java
new file mode 100644
index 0000000..8b5ea70
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_POPULATION_STATISTICS.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_PRIVACY_MASKING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_PRIVACY_MASKING.java
new file mode 100644
index 0000000..580f038
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_PRIVACY_MASKING.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_PRIVACY_MASKING_ENABLE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_PRIVACY_MASKING_ENABLE.java
new file mode 100644
index 0000000..5ad4fde
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_PRIVACY_MASKING_ENABLE.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_PTZ_WASH_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_PTZ_WASH_INFO.java
new file mode 100644
index 0000000..a77ef9d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_PTZ_WASH_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_REAL_PREVIEW_CHANNEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_REAL_PREVIEW_CHANNEL.java
new file mode 100644
index 0000000..2f713c3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_REAL_PREVIEW_CHANNEL.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_RECORD_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_RECORD_STATE.java
new file mode 100644
index 0000000..0c4e6e8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_RECORD_STATE.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_RUNNING_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_RUNNING_INFO.java
new file mode 100644
index 0000000..1eb8a92
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_RUNNING_INFO.java
@@ -0,0 +1,84 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_RUNNING_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_RUNNING_MODE.java
new file mode 100644
index 0000000..6723d4a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_RUNNING_MODE.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_SMOKE_DATA.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_SMOKE_DATA.java
new file mode 100644
index 0000000..f58f6ee
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_SMOKE_DATA.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_TEMPERATUREEX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_TEMPERATUREEX.java
new file mode 100644
index 0000000..91e9d0d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_TEMPERATUREEX.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_VAULTDOOR_STATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_VAULTDOOR_STATE_INFO.java
new file mode 100644
index 0000000..8b9ccf3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_VAULTDOOR_STATE_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_VAULT_LOCKSTATE}
+*/
+public			int					emLockState;
+/** 
+门状态 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_VIDEOSTAT_HEATMAP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_VIDEOSTAT_HEATMAP.java
new file mode 100644
index 0000000..b5dd532
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_VIDEOSTAT_HEATMAP.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_XRAY_MULTILEVEL_DETECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_XRAY_MULTILEVEL_DETECT_INFO.java
new file mode 100644
index 0000000..e331a54
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GET_XRAY_MULTILEVEL_DETECT_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GOTO_PRIVACY_MASKING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GOTO_PRIVACY_MASKING.java
new file mode 100644
index 0000000..e06e1b5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_GOTO_PRIVACY_MASKING.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_IVSEVENT_FIND_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_IVSEVENT_FIND_INFO.java
new file mode 100644
index 0000000..f53b336
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_IVSEVENT_FIND_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_IVSEVENT_NEXTFIND_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_IVSEVENT_NEXTFIND_INFO.java
new file mode 100644
index 0000000..2fad4aa
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_IVSEVENT_NEXTFIND_INFO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MAKE_TOKEN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MAKE_TOKEN.java
new file mode 100644
index 0000000..49d9810
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MAKE_TOKEN.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MANUAL_TEST.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MANUAL_TEST.java
new file mode 100644
index 0000000..8b35186
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MANUAL_TEST.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MINI_RADAR_ALARMPOINTINFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MINI_RADAR_ALARMPOINTINFO.java
new file mode 100644
index 0000000..b511512
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MINI_RADAR_ALARMPOINTINFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_ALARM_USER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_ALARM_USER.java
new file mode 100644
index 0000000..330e6b4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_ALARM_USER.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_ALARM_USER_PASSWORD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_ALARM_USER_PASSWORD.java
new file mode 100644
index 0000000..5ccd43e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_ALARM_USER_PASSWORD.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_COURSE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_COURSE.java
new file mode 100644
index 0000000..ed0919e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_COURSE.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_GROUP_FOR_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_GROUP_FOR_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..b547230
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_GROUP_FOR_VEHICLE_REG_DB.java
@@ -0,0 +1,16 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_PARKINGRECORD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_PARKINGRECORD_INFO.java
new file mode 100644
index 0000000..cb91e0b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_PARKINGRECORD_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..6799a6e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MONITORWALL_GET_COLL_SCHD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MONITORWALL_GET_COLL_SCHD.java
new file mode 100644
index 0000000..c947014
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MONITORWALL_GET_COLL_SCHD.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MONITORWALL_GET_ENABLE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MONITORWALL_GET_ENABLE.java
new file mode 100644
index 0000000..a8ff560
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MONITORWALL_GET_ENABLE.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.NET_MONITORWALL_OPERATE_TYPE;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MONITORWALL_SET_COLL_SCHD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MONITORWALL_SET_COLL_SCHD.java
new file mode 100644
index 0000000..a665d48
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MONITORWALL_SET_COLL_SCHD.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MONITORWALL_SET_ENABLE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MONITORWALL_SET_ENABLE.java
new file mode 100644
index 0000000..d341d9b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MONITORWALL_SET_ENABLE.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_CLOSE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_CLOSE_INFO.java
new file mode 100644
index 0000000..f067f12
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_CLOSE_INFO.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_LOCATE_INTO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_LOCATE_INTO.java
new file mode 100644
index 0000000..8e0c687
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_LOCATE_INTO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_OPEN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_OPEN_INFO.java
new file mode 100644
index 0000000..19297a3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_OPEN_INFO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_RECTLOCATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_RECTLOCATE_INFO.java
new file mode 100644
index 0000000..7fac841
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_RECTLOCATE_INFO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO.java
new file mode 100644
index 0000000..3b7f5a6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_TRACK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_TRACK_INFO.java
new file mode 100644
index 0000000..8b02b31
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MSGROUP_TRACK_INFO.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MULTIFACE_DETECT_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MULTIFACE_DETECT_STATE.java
new file mode 100644
index 0000000..74e0e99
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MULTIFACE_DETECT_STATE.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MULTI_APPEND_TO_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MULTI_APPEND_TO_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..05d8ccd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MULTI_APPEND_TO_VEHICLE_REG_DB.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MULTI_APPEND_TO_WORKSUIT_GROUP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MULTI_APPEND_TO_WORKSUIT_GROUP.java
new file mode 100644
index 0000000..f4d597f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_MULTI_APPEND_TO_WORKSUIT_GROUP.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_NAS_DIRECTORY_GET_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_NAS_DIRECTORY_GET_INFO.java
new file mode 100644
index 0000000..1e54eaf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_NAS_DIRECTORY_GET_INFO.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_NETAPP_GET_MOBILE_INTERFACE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_NETAPP_GET_MOBILE_INTERFACE.java
new file mode 100644
index 0000000..77f53d4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_NETAPP_GET_MOBILE_INTERFACE.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PERSON_INFO_INPUT_RESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PERSON_INFO_INPUT_RESULT.java
new file mode 100644
index 0000000..2ec6119
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PERSON_INFO_INPUT_RESULT.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PRE_UPLOAD_REMOTE_FILE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PRE_UPLOAD_REMOTE_FILE.java
new file mode 100644
index 0000000..e79039b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PRE_UPLOAD_REMOTE_FILE.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_REASON_TYPE}
+     */
+    public int               emType;
+    public NET_OUT_PRE_UPLOAD_REMOTE_FILE(){
+        this.dwSize=this.size();
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZBASE_GET_CENTER_GPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZBASE_GET_CENTER_GPS.java
new file mode 100644
index 0000000..8861934
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZBASE_GET_CENTER_GPS.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZBASE_GET_HFOV_VALUE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZBASE_GET_HFOV_VALUE.java
new file mode 100644
index 0000000..3bc47fe
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZBASE_GET_HFOV_VALUE.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZBASE_GET_VFOV_VALUE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZBASE_GET_VFOV_VALUE.java
new file mode 100644
index 0000000..9f78f57
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZBASE_GET_VFOV_VALUE.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZ_CURRENT_FOV_VALUE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZ_CURRENT_FOV_VALUE.java
new file mode 100644
index 0000000..90706b2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZ_CURRENT_FOV_VALUE.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZ_STATUS_PROC.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZ_STATUS_PROC.java
new file mode 100644
index 0000000..80a9796
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PTZ_STATUS_PROC.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PUSH_ANALYSE_PICTURE_FILE_BYRULE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PUSH_ANALYSE_PICTURE_FILE_BYRULE.java
new file mode 100644
index 0000000..fd9ef3a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_PUSH_ANALYSE_PICTURE_FILE_BYRULE.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSE.java
new file mode 100644
index 0000000..cf04f0b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSE.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILE.java
new file mode 100644
index 0000000..4f2ae30
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILE.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILECLOSE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILECLOSE.java
new file mode 100644
index 0000000..5900a69
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILECLOSE.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILEOPEN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILEOPEN.java
new file mode 100644
index 0000000..4834f2a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILEOPEN.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSE_CLOSE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSE_CLOSE.java
new file mode 100644
index 0000000..84fc42e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSE_CLOSE.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSE_OPEN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSE_OPEN.java
new file mode 100644
index 0000000..91cf63a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_QUERY_COURSE_OPEN.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_ALARMPOINTINFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_ALARMPOINTINFO.java
new file mode 100644
index 0000000..8b60250
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_ALARMPOINTINFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_CALCULATEREALSIZE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_CALCULATEREALSIZE.java
new file mode 100644
index 0000000..aac0a75
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_CALCULATEREALSIZE.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_GETCAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_GETCAPS.java
new file mode 100644
index 0000000..6b5a867
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_GETCAPS.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_RADAR_GETCAPS_AREASUB_TYPE;
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_RADAR_GETCAPS_AREASUB_TYPE}
+     */
+    public int emAreaSubType;
+    /**
+     * 雷达类型 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_GETSTATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_GETSTATUS.java
new file mode 100644
index 0000000..99791df
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_GETSTATUS.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_GET_RFID_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_GET_RFID_MODE.java
new file mode 100644
index 0000000..b87f67d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_GET_RFID_MODE.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_MANUAL_TRACK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_MANUAL_TRACK.java
new file mode 100644
index 0000000..88ef378
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_MANUAL_TRACK.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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 NET_OUT_RADAR_MANUAL_TRACK() {
+		this.dwSize = this.size();
+	}
+
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_SETCALIBRATION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_SETCALIBRATION.java
new file mode 100644
index 0000000..0d57d25
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_SETCALIBRATION.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_SET_RFID_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_SET_RFID_MODE.java
new file mode 100644
index 0000000..d4e620a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_SET_RFID_MODE.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_STARTUPGRADE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_STARTUPGRADE.java
new file mode 100644
index 0000000..8eef10c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_RADAR_STARTUPGRADE.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_REMOTE_SLEEP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_REMOTE_SLEEP.java
new file mode 100644
index 0000000..1bda88b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_REMOTE_SLEEP.java
@@ -0,0 +1,16 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCADA_GET_ATTRIBUTE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCADA_GET_ATTRIBUTE_INFO.java
new file mode 100644
index 0000000..c72a3bb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCADA_GET_ATTRIBUTE_INFO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCENICSPOT_GETCAPS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCENICSPOT_GETCAPS_INFO.java
new file mode 100644
index 0000000..2270ada
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCENICSPOT_GETCAPS_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCENICSPOT_GETPOINTINFOS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCENICSPOT_GETPOINTINFOS_INFO.java
new file mode 100644
index 0000000..64f5898
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCENICSPOT_GETPOINTINFOS_INFO.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCENICSPOT_SETPOINTINFO_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCENICSPOT_SETPOINTINFO_INFO.java
new file mode 100644
index 0000000..9d1f954
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCENICSPOT_SETPOINTINFO_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCENICSPOT_TURNTOPOINT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCENICSPOT_TURNTOPOINT_INFO.java
new file mode 100644
index 0000000..ce6dd19
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SCENICSPOT_TURNTOPOINT_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SECURITYGATE_ATTACH_ALARM_STATISTICS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SECURITYGATE_ATTACH_ALARM_STATISTICS.java
new file mode 100644
index 0000000..3ebe178
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SECURITYGATE_ATTACH_ALARM_STATISTICS.java
@@ -0,0 +1,16 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_2DCODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_2DCODE.java
new file mode 100644
index 0000000..c5ae3b1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_2DCODE.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_ALARMMODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_ALARMMODE.java
new file mode 100644
index 0000000..585858d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_ALARMMODE.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_BACKUP_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_BACKUP_MODE.java
new file mode 100644
index 0000000..a2ff632
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_BACKUP_MODE.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_BLIND_REAL_CHANNEL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_BLIND_REAL_CHANNEL.java
new file mode 100644
index 0000000..60285d8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_BLIND_REAL_CHANNEL.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_BYPASSMODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_BYPASSMODE.java
new file mode 100644
index 0000000..476ccfa
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_BYPASSMODE.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_CAMERA_CFG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_CAMERA_CFG.java
new file mode 100644
index 0000000..e918725
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_CAMERA_CFG.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_CHANNEL_CFG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_CHANNEL_CFG.java
new file mode 100644
index 0000000..4626ae0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_CHANNEL_CFG.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_CONSUME_RESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_CONSUME_RESULT.java
new file mode 100644
index 0000000..0dbf8d1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_CONSUME_RESULT.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_COURSE_RECORD_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_COURSE_RECORD_MODE.java
new file mode 100644
index 0000000..b7a18ad
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_COURSE_RECORD_MODE.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_COURSE_RECORD_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_COURSE_RECORD_STATE.java
new file mode 100644
index 0000000..7a85450
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_COURSE_RECORD_STATE.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO.java
new file mode 100644
index 0000000..edba8dc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_OPENKEY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_OPENKEY_INFO.java
new file mode 100644
index 0000000..be07592
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_OPENKEY_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_OPEN_CODE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_OPEN_CODE_INFO.java
new file mode 100644
index 0000000..fe8f1e1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_OPEN_CODE_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_TEMP_USERID_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_TEMP_USERID_INFO.java
new file mode 100644
index 0000000..3ac84b1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_TEMP_USERID_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_EXAM_RECORDING_PLANS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_EXAM_RECORDING_PLANS.java
new file mode 100644
index 0000000..9e5d5de
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_EXAM_RECORDING_PLANS.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_GLOBAL_PARAMETER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_GLOBAL_PARAMETER.java
new file mode 100644
index 0000000..d3dc2e2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_GLOBAL_PARAMETER.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_OUTPUT_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_OUTPUT_STATE.java
new file mode 100644
index 0000000..6bd600b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_OUTPUT_STATE.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PARKINGRULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PARKINGRULE_INFO.java
new file mode 100644
index 0000000..56fe5ea
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PARKINGRULE_INFO.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PARKINGSPACE_STATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PARKINGSPACE_STATE_INFO.java
new file mode 100644
index 0000000..ed279be
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PARKINGSPACE_STATE_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PARK_CONTROL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PARK_CONTROL_INFO.java
new file mode 100644
index 0000000..c0c6c8f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PARK_CONTROL_INFO.java
@@ -0,0 +1,14 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_POLLING_CONFIG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_POLLING_CONFIG.java
new file mode 100644
index 0000000..c6a5ed8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_POLLING_CONFIG.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PRIVACY_MASKING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PRIVACY_MASKING.java
new file mode 100644
index 0000000..cca2013
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PRIVACY_MASKING.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PRIVACY_MASKING_ENABLE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PRIVACY_MASKING_ENABLE.java
new file mode 100644
index 0000000..c1ccc64
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PRIVACY_MASKING_ENABLE.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PTZ_WASH_POSISTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PTZ_WASH_POSISTION_INFO.java
new file mode 100644
index 0000000..f850735
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_PTZ_WASH_POSISTION_INFO.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_RUNNING_MODE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_RUNNING_MODE.java
new file mode 100644
index 0000000..54bf42e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_RUNNING_MODE.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_TRANSMITTUNNEL_PARAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_TRANSMITTUNNEL_PARAM.java
new file mode 100644
index 0000000..089a6d7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_TRANSMITTUNNEL_PARAM.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_XRAY_MULTILEVEL_DETECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_XRAY_MULTILEVEL_DETECT_INFO.java
new file mode 100644
index 0000000..746f755
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SET_XRAY_MULTILEVEL_DETECT_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SMOKE_REMOTE_REBOOT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SMOKE_REMOTE_REBOOT_INFO.java
new file mode 100644
index 0000000..ffdc107
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SMOKE_REMOTE_REBOOT_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SNAP_BY_EVENT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SNAP_BY_EVENT.java
new file mode 100644
index 0000000..36decf1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SNAP_BY_EVENT.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SPLIT_GET_OSD_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SPLIT_GET_OSD_EX.java
new file mode 100644
index 0000000..b34a79b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SPLIT_GET_OSD_EX.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SPLIT_SET_HIGHLIGHT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SPLIT_SET_HIGHLIGHT.java
new file mode 100644
index 0000000..14c4cf8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SPLIT_SET_HIGHLIGHT.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SPLIT_SET_OSD_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SPLIT_SET_OSD_EX.java
new file mode 100644
index 0000000..6777ed6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_SPLIT_SET_OSD_EX.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STARTMULTIFIND_FACERECONGNITION_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STARTMULTIFIND_FACERECONGNITION_EX.java
new file mode 100644
index 0000000..9af6db2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STARTMULTIFIND_FACERECONGNITION_EX.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STARTSERACH_DEVICE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STARTSERACH_DEVICE.java
new file mode 100644
index 0000000..2df0e06
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STARTSERACH_DEVICE.java
@@ -0,0 +1,16 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_BACKUP_TASK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_BACKUP_TASK_INFO.java
new file mode 100644
index 0000000..3b9c512
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_BACKUP_TASK_INFO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_BACKUP_TASK_SESSION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_BACKUP_TASK_SESSION.java
new file mode 100644
index 0000000..f0903fe
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_BACKUP_TASK_SESSION.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_FIND_DETAIL_CLUSTER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_FIND_DETAIL_CLUSTER.java
new file mode 100644
index 0000000..ca7338a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_FIND_DETAIL_CLUSTER.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_FIND_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_FIND_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..da35744
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_FIND_VEHICLE_REG_DB.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_FIND_WATERDATA_STAT_SERVER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_FIND_WATERDATA_STAT_SERVER_INFO.java
new file mode 100644
index 0000000..d00d953
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_FIND_WATERDATA_STAT_SERVER_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_SUBLINK_LISTEN_SERVER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_SUBLINK_LISTEN_SERVER.java
new file mode 100644
index 0000000..df7531c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_SUBLINK_LISTEN_SERVER.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_TALK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_TALK_INFO.java
new file mode 100644
index 0000000..0273cff
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_START_TALK_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STOP_FIND_DETAIL_CLUSTER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STOP_FIND_DETAIL_CLUSTER_INFO.java
new file mode 100644
index 0000000..c42293a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STOP_FIND_DETAIL_CLUSTER_INFO.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STOP_FIND_VEHICLE_REG_DB.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STOP_FIND_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..a949c9a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STOP_FIND_VEHICLE_REG_DB.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STOP_FIND_WATERDATA_STAT_SERVER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STOP_FIND_WATERDATA_STAT_SERVER_INFO.java
new file mode 100644
index 0000000..43c6ae0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STOP_FIND_WATERDATA_STAT_SERVER_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STORAGE_DEV_INFOS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STORAGE_DEV_INFOS.java
new file mode 100644
index 0000000..3df64b7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_STORAGE_DEV_INFOS.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TALK_SEND_DATA_FILE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TALK_SEND_DATA_FILE.java
new file mode 100644
index 0000000..9de7ff7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TALK_SEND_DATA_FILE.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TALK_SEND_DATA_STREAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TALK_SEND_DATA_STREAM.java
new file mode 100644
index 0000000..3fc25d1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TALK_SEND_DATA_STREAM.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_ATTACH.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_ATTACH.java
new file mode 100644
index 0000000..9b1e164
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_ATTACH.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_DOFIND_HISTORYDATA.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_DOFIND_HISTORYDATA.java
new file mode 100644
index 0000000..3a6e164
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_DOFIND_HISTORYDATA.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_GET.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_GET.java
new file mode 100644
index 0000000..943cf9c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_GET.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_GET_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_GET_CAPS.java
new file mode 100644
index 0000000..ce17754
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_GET_CAPS.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_GET_DEVLIST.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_GET_DEVLIST.java
new file mode 100644
index 0000000..14c6298
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_GET_DEVLIST.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_GET_NETSTATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_GET_NETSTATE.java
new file mode 100644
index 0000000..abfd11c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_GET_NETSTATE.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_ADDDEVICE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_ADDDEVICE.java
new file mode 100644
index 0000000..801c637
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_ADDDEVICE.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_ADDRULE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_ADDRULE.java
new file mode 100644
index 0000000..4678ec5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_ADDRULE.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_AIRSWITHFIND.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_AIRSWITHFIND.java
new file mode 100644
index 0000000..9434d36
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_AIRSWITHFIND.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_AIRSWITHRESET.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_AIRSWITHRESET.java
new file mode 100644
index 0000000..e638480
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_AIRSWITHRESET.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_CHARGECLEAR.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_CHARGECLEAR.java
new file mode 100644
index 0000000..751d48a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_CHARGECLEAR.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_CURRENTSTATUSGET.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_CURRENTSTATUSGET.java
new file mode 100644
index 0000000..722b552
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_CURRENTSTATUSGET.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_DELDEVICE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_DELDEVICE.java
new file mode 100644
index 0000000..63dde25
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_DELDEVICE.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_DELRULE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_DELRULE.java
new file mode 100644
index 0000000..8368926
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_DELRULE.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_DEVREPLACE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_DEVREPLACE.java
new file mode 100644
index 0000000..6de8f24
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_DEVREPLACE.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_ENABLE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_ENABLE.java
new file mode 100644
index 0000000..d170863
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_ENABLE.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_LEAKCURTPOST.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_LEAKCURTPOST.java
new file mode 100644
index 0000000..39e287e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_LEAKCURTPOST.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_LEAKCURTPOSTASYNC.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_LEAKCURTPOSTASYNC.java
new file mode 100644
index 0000000..d3166b8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_LEAKCURTPOSTASYNC.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_MODRULE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_MODRULE.java
new file mode 100644
index 0000000..1b4bdae
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_MODRULE.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_OFFLINELOGCLEAN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_OFFLINELOGCLEAN.java
new file mode 100644
index 0000000..b5ada09
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_OFFLINELOGCLEAN.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_QUERULE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_QUERULE.java
new file mode 100644
index 0000000..5d11f4b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_QUERULE.java
@@ -0,0 +1,61 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_VALVECONTROL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_VALVECONTROL.java
new file mode 100644
index 0000000..d5fce9f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SERVICE_VALVECONTROL.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SET.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SET.java
new file mode 100644
index 0000000..36d8f4e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_SET.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_START_HISTORYDATA.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_START_HISTORYDATA.java
new file mode 100644
index 0000000..5c7e28e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_THINGS_START_HISTORYDATA.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFICDOFINDSTAT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFICDOFINDSTAT.java
new file mode 100644
index 0000000..a9e7966
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFICDOFINDSTAT.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFICSTARTFINDSTAT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFICSTARTFINDSTAT.java
new file mode 100644
index 0000000..806a4b9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFICSTARTFINDSTAT.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFIC_RADAR_GET_OBJECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFIC_RADAR_GET_OBJECT_INFO.java
new file mode 100644
index 0000000..1d0614d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFIC_RADAR_GET_OBJECT_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFIC_SNAP_RADAR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFIC_SNAP_RADAR_INFO.java
new file mode 100644
index 0000000..c723ca6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFIC_SNAP_RADAR_INFO.java
@@ -0,0 +1,76 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFIC_SNAP_STROBE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFIC_SNAP_STROBE_INFO.java
new file mode 100644
index 0000000..171905e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRAFFIC_SNAP_STROBE_INFO.java
@@ -0,0 +1,101 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRANSFER_SUBLINK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRANSFER_SUBLINK_INFO.java
new file mode 100644
index 0000000..07fb3e4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRANSFER_SUBLINK_INFO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRANSMIT_CMD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRANSMIT_CMD.java
new file mode 100644
index 0000000..2a2d8a1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_TRANSMIT_CMD.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_UNIFIEDINFOCOLLECT_GET_DEVSTATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_UNIFIEDINFOCOLLECT_GET_DEVSTATUS.java
new file mode 100644
index 0000000..4fa3101
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_UNIFIEDINFOCOLLECT_GET_DEVSTATUS.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_UPLOAD_UPPACKING_CHECK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_UPLOAD_UPPACKING_CHECK_INFO.java
new file mode 100644
index 0000000..77f6ecd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_UPLOAD_UPPACKING_CHECK_INFO.java
@@ -0,0 +1,17 @@
+ package com.ruoyi.device.dhsdk.lib.structure;
+ import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_VIDEOIN_DAYNIGHT_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_VIDEOIN_DAYNIGHT_CAPS.java
new file mode 100644
index 0000000..3052766
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_VIDEOIN_DAYNIGHT_CAPS.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+/**
+ * @author 47081
+ * @desc
+ * @version 1.0.0
+ * @date 2021/4/9
+ */
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_VIDEO_ENCODE_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_VIDEO_ENCODE_CAPS.java
new file mode 100644
index 0000000..a9c6a01
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_VIDEO_ENCODE_CAPS.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_WATERDATA_STAT_SERVER_GETCAPS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_WATERDATA_STAT_SERVER_GETCAPS_INFO.java
new file mode 100644
index 0000000..81a0252
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_WATERDATA_STAT_SERVER_GETCAPS_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_WATERDATA_STAT_SERVER_SUPPORT}
+*/
+public			int					emSupport;
+/** 
+是否支持本地存储 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_WATERDATA_STAT_SERVER_GETDATA_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_WATERDATA_STAT_SERVER_GETDATA_INFO.java
new file mode 100644
index 0000000..5171021
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_WATERDATA_STAT_SERVER_GETDATA_INFO.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_WLAN_ACCESSPOINT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_WLAN_ACCESSPOINT.java
new file mode 100644
index 0000000..89fc8a0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_WLAN_ACCESSPOINT.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_XRAY_ATTACH_PACKAGE_STATISTICS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_XRAY_ATTACH_PACKAGE_STATISTICS.java
new file mode 100644
index 0000000..8e15095
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OUT_XRAY_ATTACH_PACKAGE_STATISTICS.java
@@ -0,0 +1,16 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OVER_FLOW_CONTROL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OVER_FLOW_CONTROL_INFO.java
new file mode 100644
index 0000000..3b1fee2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OVER_FLOW_CONTROL_INFO.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OVER_LAPS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OVER_LAPS_INFO.java
new file mode 100644
index 0000000..b373134
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_OVER_LAPS_INFO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PACKAGE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PACKAGE_INFO.java
new file mode 100644
index 0000000..ad5f210
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PACKAGE_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PARKINGDETECTION_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PARKINGDETECTION_RULE_INFO.java
new file mode 100644
index 0000000..2dea413
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PARKINGDETECTION_RULE_INFO.java
@@ -0,0 +1,45 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.lib.structure.NET_CFG_SIZEFILTER_INFO;
+
+
+/**
+ * 事件类型	EVENT_IVS_PARKINGDETECTION  非法停车事件 对应的规则配置
+ */
+public class NET_PARKINGDETECTION_RULE_INFO extends SdkStructure {
+    /**
+     * 检测区域顶点数
+     */
+    public int					    nDetectRegionPoint;
+    /**
+     * 检测区域
+     */
+    public POINTCOORDINATE[]       stuDetectRegion=(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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PARKINGRECORD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PARKINGRECORD_INFO.java
new file mode 100644
index 0000000..66d0ef1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PARKINGRECORD_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PASSED_SUBTOTAL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PASSED_SUBTOTAL_INFO.java
new file mode 100644
index 0000000..90353bc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PASSED_SUBTOTAL_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PASSERBY_DB_CONFIG_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PASSERBY_DB_CONFIG_INFO.java
new file mode 100644
index 0000000..bfa8d60
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PASSERBY_DB_CONFIG_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PEDESTRAIN_PRIORITY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PEDESTRAIN_PRIORITY_INFO.java
new file mode 100644
index 0000000..731bdd4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PEDESTRAIN_PRIORITY_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PED_DETECTOR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PED_DETECTOR_INFO.java
new file mode 100644
index 0000000..e1f2c33
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PED_DETECTOR_INFO.java
@@ -0,0 +1,60 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PEOPLE_REGION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PEOPLE_REGION_INFO.java
new file mode 100644
index 0000000..d5148f1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PEOPLE_REGION_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PERSON_FEATURE_VALUE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PERSON_FEATURE_VALUE_INFO.java
new file mode 100644
index 0000000..a6d3687
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PERSON_FEATURE_VALUE_INFO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PERSON_FREQUENCY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PERSON_FREQUENCY_INFO.java
new file mode 100644
index 0000000..764c681
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PERSON_FREQUENCY_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_FREQUENCY_ALARM_TYPE}
+      */
+     public    int                          emAlarmType;			        // 报警类型
+     public    int							nTimes;					        // 频次
+     public    byte[]						szReserved=new byte[128];		// 保留字节
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASES_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASES_INFO.java
new file mode 100644
index 0000000..9eab1f6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASES_INFO.java
@@ -0,0 +1,100 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_CONFIG_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_CONFIG_INFO.java
new file mode 100644
index 0000000..c5300d6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_CONFIG_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_CONFIG_NIGHT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_CONFIG_NIGHT_INFO.java
new file mode 100644
index 0000000..5879266
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_CONFIG_NIGHT_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_LIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_LIST_INFO.java
new file mode 100644
index 0000000..58cc785
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_LIST_INFO.java
@@ -0,0 +1,96 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_PRIORITY_CONFIG_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_PRIORITY_CONFIG_INFO.java
new file mode 100644
index 0000000..239ca61
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_PRIORITY_CONFIG_INFO.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_PRIORITY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_PRIORITY_INFO.java
new file mode 100644
index 0000000..8ee28bc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_PRIORITY_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_SETTINGS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_SETTINGS_INFO.java
new file mode 100644
index 0000000..90c46c1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PHASE_SETTINGS_INFO.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PIG_STAY_STAT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PIG_STAY_STAT.java
new file mode 100644
index 0000000..39dadca
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PIG_STAY_STAT.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PIG_TEMPERATURE_DATA.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PIG_TEMPERATURE_DATA.java
new file mode 100644
index 0000000..8b71543
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PIG_TEMPERATURE_DATA.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PIG_TEMPERATURE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PIG_TEMPERATURE_INFO.java
new file mode 100644
index 0000000..518306a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PIG_TEMPERATURE_INFO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POINT_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POINT_EX.java
new file mode 100644
index 0000000..1300a58
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POINT_EX.java
@@ -0,0 +1,15 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POINT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POINT_INFO.java
new file mode 100644
index 0000000..064ec26
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POINT_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POINT_PAIR_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POINT_PAIR_EX.java
new file mode 100644
index 0000000..4ceaacd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POINT_PAIR_EX.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POPULATION_STATISTICS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POPULATION_STATISTICS_INFO.java
new file mode 100644
index 0000000..d4339ec
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POPULATION_STATISTICS_INFO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POSTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POSTION.java
new file mode 100644
index 0000000..ee1e571
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POSTION.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POWER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POWER_INFO.java
new file mode 100644
index 0000000..1bcb314
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POWER_INFO.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POWER_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POWER_STATUS.java
new file mode 100644
index 0000000..118abde
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_POWER_STATUS.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_MAX_BATTERY_NUM;
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PRESET_POSITION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PRESET_POSITION.java
new file mode 100644
index 0000000..b931fa4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PRESET_POSITION.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PRESSING_PLATE_DETECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PRESSING_PLATE_DETECT.java
new file mode 100644
index 0000000..4f3eb34
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PRESSING_PLATE_DETECT.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  压板检测结果 
+* @date 2022/06/28 19:44:56
+*/
+public class NET_PRESSING_PLATE_DETECT extends NetSDKLib.SdkStructure {
+/** 
+压板状态 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PREVENTION_OF_ARMING_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PREVENTION_OF_ARMING_INFO.java
new file mode 100644
index 0000000..7990403
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PREVENTION_OF_ARMING_INFO.java
@@ -0,0 +1,62 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PRIVACY_MASKING_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PRIVACY_MASKING_CAPS.java
new file mode 100644
index 0000000..16c4268
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PRIVACY_MASKING_CAPS.java
@@ -0,0 +1,46 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PRIVACY_MASKING_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PRIVACY_MASKING_INFO.java
new file mode 100644
index 0000000..f38d7a6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PRIVACY_MASKING_INFO.java
@@ -0,0 +1,62 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROHELMET_ATTRIBUTE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROHELMET_ATTRIBUTE.java
new file mode 100644
index 0000000..3fe8c75
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROHELMET_ATTRIBUTE.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 防护面罩相关属性状态信息
+ * @date 2022/07/22 10:58:03
+ */
+public class NET_PROHELMET_ATTRIBUTE extends NetSDKLib.SdkStructure {
+	/**
+	 * 是否有戴防护面罩 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_WEARING_STATE}
+	 */
+	public int emHasHat;
+	/**
+	 * 帽子颜色 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROJECT_TASK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROJECT_TASK.java
new file mode 100644
index 0000000..fd33335
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROJECT_TASK.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_TSECT;
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTIES_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTIES_INFO.java
new file mode 100644
index 0000000..7e841ec
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTIES_INFO.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTIES_INTARRAY_VALUE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTIES_INTARRAY_VALUE.java
new file mode 100644
index 0000000..babfbc6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTIES_INTARRAY_VALUE.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTIES_NAME.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTIES_NAME.java
new file mode 100644
index 0000000..2c4df0e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTIES_NAME.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTY_LIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTY_LIST_INFO.java
new file mode 100644
index 0000000..2bbb53f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTY_LIST_INFO.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTY_PLAN_LIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTY_PLAN_LIST_INFO.java
new file mode 100644
index 0000000..0019e8e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PROPERTY_PLAN_LIST_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PTZ_MOVING_DETECTIONRESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PTZ_MOVING_DETECTIONRESULT.java
new file mode 100644
index 0000000..26e3817
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PTZ_MOVING_DETECTIONRESULT.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_PTZ_MOVING_RESULT_TYPE}
+*/
+public			int					emPTZMovingUp;
+/** 
+向下运动检测结果 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_PTZ_MOVING_RESULT_TYPE}
+*/
+public			int					emPTZMovingDown;
+/** 
+向左运动检测结果 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_PTZ_MOVING_RESULT_TYPE}
+*/
+public			int					emPTZMovingLeft;
+/** 
+向右运动检测结果 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_PTZ_MOVING_RESULT_TYPE}
+*/
+public			int					emPTZMovingRight;
+/** 
+变倍(大)运动检测结果 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_PTZ_MOVING_RESULT_TYPE}
+*/
+public			int					emPTZMovingZoomWide;
+/** 
+变倍(小)运动检测结果 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PTZ_WASH_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PTZ_WASH_INFO.java
new file mode 100644
index 0000000..51c80ab
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PTZ_WASH_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PUSH_PICFILE_BYRULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PUSH_PICFILE_BYRULE_INFO.java
new file mode 100644
index 0000000..bdddbe0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PUSH_PICFILE_BYRULE_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PUSH_PICTURE_BYRULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PUSH_PICTURE_BYRULE_INFO.java
new file mode 100644
index 0000000..78b792a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_PUSH_PICTURE_BYRULE_INFO.java
@@ -0,0 +1,59 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_ALARMPOINT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_ALARMPOINT_INFO.java
new file mode 100644
index 0000000..b95fa17
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_ALARMPOINT_INFO.java
@@ -0,0 +1,69 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_CAPACITY_CAP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_CAPACITY_CAP.java
new file mode 100644
index 0000000..88655e2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_CAPACITY_CAP.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_CARSPEED_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_CARSPEED_INFO.java
new file mode 100644
index 0000000..878622b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_CARSPEED_INFO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_CHANNEL_CAP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_CHANNEL_CAP.java
new file mode 100644
index 0000000..c06c5f5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_CHANNEL_CAP.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_DETECT_OBJECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_DETECT_OBJECT.java
new file mode 100644
index 0000000..077009e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_DETECT_OBJECT.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_DEVICE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_DEVICE_INFO.java
new file mode 100644
index 0000000..9674e80
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_DEVICE_INFO.java
@@ -0,0 +1,61 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_MOVEDDETECT_CAP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_MOVEDDETECT_CAP.java
new file mode 100644
index 0000000..d1f2828
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_MOVEDDETECT_CAP.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_NOTIFY_ALARMPOINTINFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_NOTIFY_ALARMPOINTINFO.java
new file mode 100644
index 0000000..849ef36
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_NOTIFY_ALARMPOINTINFO.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_NOTIFY_RFIDCARD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_NOTIFY_RFIDCARD_INFO.java
new file mode 100644
index 0000000..31a1fad
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_NOTIFY_RFIDCARD_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_PIXELLINE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_PIXELLINE.java
new file mode 100644
index 0000000..890022f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_PIXELLINE.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_PIXELPOINT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_PIXELPOINT.java
new file mode 100644
index 0000000..1ef3370
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_PIXELPOINT.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_PROTOCAL_CAP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_PROTOCAL_CAP.java
new file mode 100644
index 0000000..0b0943c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_PROTOCAL_CAP.java
@@ -0,0 +1,46 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_REGIONDETECTION_RFIDCARD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_REGIONDETECTION_RFIDCARD_INFO.java
new file mode 100644
index 0000000..e947d24
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_REGIONDETECTION_RFIDCARD_INFO.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_RFIDCARD_CONFIG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_RFIDCARD_CONFIG.java
new file mode 100644
index 0000000..7ccdd11
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_RFIDCARD_CONFIG.java
@@ -0,0 +1,29 @@
+ package com.ruoyi.device.dhsdk.lib.structure;
+
+
+ import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_RFIDCARD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_RFIDCARD_INFO.java
new file mode 100644
index 0000000..23b428a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_RFIDCARD_INFO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_RULE_INFO.java
new file mode 100644
index 0000000..24a9fa7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_RULE_INFO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_SCENE_CAP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_SCENE_CAP.java
new file mode 100644
index 0000000..d4b5770
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_SCENE_CAP.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_SCREEN_RULE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_SCREEN_RULE.java
new file mode 100644
index 0000000..a3bd558
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RADAR_SCREEN_RULE.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RAID_ERR_DETAIL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RAID_ERR_DETAIL_INFO.java
new file mode 100644
index 0000000..c66fcc5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RAID_ERR_DETAIL_INFO.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RAID_MEMBER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RAID_MEMBER_INFO.java
new file mode 100644
index 0000000..9f0fc65
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RAID_MEMBER_INFO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORDBACKUP_PROCESSTIME.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORDBACKUP_PROCESSTIME.java
new file mode 100644
index 0000000..bb5e1b5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORDBACKUP_PROCESSTIME.java
@@ -0,0 +1,9 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORDBACKUP_REMOTE_TASK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORDBACKUP_REMOTE_TASK.java
new file mode 100644
index 0000000..ed0ecbe
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORDBACKUP_REMOTE_TASK.java
@@ -0,0 +1,62 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORDBACKUP_TASKID_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORDBACKUP_TASKID_INFO.java
new file mode 100644
index 0000000..937b272
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORDBACKUP_TASKID_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORDFILE_INFOEX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORDFILE_INFOEX.java
new file mode 100644
index 0000000..cbcd070
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORDFILE_INFOEX.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_ACCESS_CTL_CONSUMPTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_ACCESS_CTL_CONSUMPTION_INFO.java
new file mode 100644
index 0000000..71b5d90
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_ACCESS_CTL_CONSUMPTION_INFO.java
@@ -0,0 +1,133 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.NetSDKLib.NET_ACCESSCTLCARD_TYPE}
+*/
+public			int					emCardType;
+/** 
+用户ID
+*/
+public			byte[]					szUserID=new byte[12];
+/** 
+事件类型   {@link com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_ENUM_DIRECTION_ACCESS_CTL}
+*/
+public			int					emType;
+/** 
+消费结果  {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_CONSUMPTION_STATUS}
+*/
+public			int					emStatus;
+/** 
+开门方式   {@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_BACKUP_PROGRESS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_BACKUP_PROGRESS.java
new file mode 100644
index 0000000..c69f092
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_BACKUP_PROGRESS.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_INFO.java
new file mode 100644
index 0000000..19ff034
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_INFO.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_INFO_ARRAY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_INFO_ARRAY.java
new file mode 100644
index 0000000..8646f8a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_INFO_ARRAY.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_STATUS.java
new file mode 100644
index 0000000..7a738ee
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECORD_STATUS.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECT.java
new file mode 100644
index 0000000..4fcc26a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RECT.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REGION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REGION_INFO.java
new file mode 100644
index 0000000..9add6db
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REGION_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REGION_PEOPLE_STAT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REGION_PEOPLE_STAT_INFO.java
new file mode 100644
index 0000000..6561874
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REGION_PEOPLE_STAT_INFO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RELATING_VIDEO_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RELATING_VIDEO_INFO.java
new file mode 100644
index 0000000..c8429cb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RELATING_VIDEO_INFO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REMAIN_ANALYSE_TOTAL_CAPACITY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REMAIN_ANALYSE_TOTAL_CAPACITY.java
new file mode 100644
index 0000000..feceb15
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REMAIN_ANALYSE_TOTAL_CAPACITY.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 可供任务调度的总的智能能力
+ * @date 2021/2/8
+ */
+public class NET_REMAIN_ANALYSE_TOTAL_CAPACITY extends NetSDKLib.SdkStructure {
+  /** 业务大类{@link com.ruoyi.device.dhsdk.lib.NetSDKLib.EM_SCENE_CLASS_TYPE} */
+  public int emClassType;
+  /** 任务调度总共能分析的视频流数目 */
+  public int nNumber;
+  /** 预留字节 */
+  public byte[] byReserved = new byte[256];
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REMOTE_FILE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REMOTE_FILE_INFO.java
new file mode 100644
index 0000000..17a0030
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REMOTE_FILE_INFO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REMOTE_STREAM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REMOTE_STREAM_INFO.java
new file mode 100644
index 0000000..449f9a3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_REMOTE_STREAM_INFO.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RESOLUTION_INFO_ARRAY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RESOLUTION_INFO_ARRAY.java
new file mode 100644
index 0000000..de967c6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RESOLUTION_INFO_ARRAY.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RESPIRATOR_DETECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RESPIRATOR_DETECT.java
new file mode 100644
index 0000000..ed6e65f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RESPIRATOR_DETECT.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  呼吸器检测结果 
+* @date 2022/06/28 19:44:55
+*/
+public class NET_RESPIRATOR_DETECT extends NetSDKLib.SdkStructure {
+/** 
+呼吸器状态 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RETROGRADE_DETECTION_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RETROGRADE_DETECTION_RULE_INFO.java
new file mode 100644
index 0000000..46cf9ae
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RETROGRADE_DETECTION_RULE_INFO.java
@@ -0,0 +1,60 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+/**
+ * @description 事件类型EVENT_IVS_RETROGRADEDETECTION(逆行检测事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.DH_POINT;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+public class NET_RETROGRADE_DETECTION_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public POINTCOORDINATE[]				stuDetectRegion=(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	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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RFIDELETAG_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RFIDELETAG_INFO.java
new file mode 100644
index 0000000..23a5ed9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RFIDELETAG_INFO.java
@@ -0,0 +1,103 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_CARD_PROVINCE}
+*/
+public			int					emCardPrivince;
+/** 
+车牌号码
+*/
+public			byte[]					szPlateNumber=new byte[32];
+/** 
+出厂日期
+*/
+public			byte[]					szProductionDate=new byte[16];
+/** 
+车辆类型 {@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_PLATE_TYPE}
+*/
+public			int					emPlateType;
+/** 
+检验有效期,年-月
+*/
+public			byte[]					szInspectionValidity=new byte[16];
+/** 
+逾期未年检标志, 0:已年检, 1:逾期未年检
+*/
+public			int					nInspectionFlag;
+/** 
+强制报废期,从检验有效期开始,距离强制报废期的年数
+*/
+public			int					nMandatoryRetirement;
+/** 
+车身颜色 {@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RFID_CARD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RFID_CARD_INFO.java
new file mode 100644
index 0000000..0801512
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RFID_CARD_INFO.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RINGS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RINGS_INFO.java
new file mode 100644
index 0000000..bb3e64d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RINGS_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RINGS_LIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RINGS_LIST_INFO.java
new file mode 100644
index 0000000..cf6e7c2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RINGS_LIST_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RIOTERDETECTION_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RIOTERDETECTION_RULE_INFO.java
new file mode 100644
index 0000000..2d04a32
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RIOTERDETECTION_RULE_INFO.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * 事件类型 EVENT_IVS_RIOTERDETECTION (人群聚集) 对应的规则配置
+ */
+public class NET_RIOTERDETECTION_RULE_INFO extends SdkStructure {
+    /**
+     * 检测区域顶点数
+     */
+    public  int					nDetectRegionPoint;
+    /**
+     * 检测区域
+     */
+    public  POINTCOORDINATE[]   stuDetectRegion=(POINTCOORDINATE[]) new POINTCOORDINATE().toArray(20);
+    /**
+     * 检测模式个数
+     */
+    public int                  nModeNum;
+    /**
+     * 支持的检测模式,实际只能选一种0:表示"MiniArea"按最小聚集区域检测,1:表示"Humans"按聚集人员数量阈值
+     */
+    public  byte[]              nModeList=new byte[64];
+    /**
+     * 最小聚集区域矩形框,分别对应矩形框的左上和右下点,矩形框的实际面积表示触发报警的最小人群聚集面积
+     */
+    public  POINTCOORDINATE[]   stuMinDetectRect=(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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RUNMODE_PARAMS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RUNMODE_PARAMS.java
new file mode 100644
index 0000000..264237e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_RUNMODE_PARAMS.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SCADA_NOTIFY_POINT_ALARM_INFO_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SCADA_NOTIFY_POINT_ALARM_INFO_EX.java
new file mode 100644
index 0000000..fed4f32
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SCADA_NOTIFY_POINT_ALARM_INFO_EX.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SCENICSPOT_CAPS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SCENICSPOT_CAPS_INFO.java
new file mode 100644
index 0000000..1b3ad3b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SCENICSPOT_CAPS_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SCREEN_SHOW_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SCREEN_SHOW_INFO.java
new file mode 100644
index 0000000..ec32b9a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SCREEN_SHOW_INFO.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_ALARM_FACEIMAGE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_ALARM_FACEIMAGE_INFO.java
new file mode 100644
index 0000000..b851e52
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_ALARM_FACEIMAGE_INFO.java
@@ -0,0 +1,15 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_ALARM_FACE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_ALARM_FACE_INFO.java
new file mode 100644
index 0000000..963a03f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_ALARM_FACE_INFO.java
@@ -0,0 +1,68 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+/**
+ * @author : 291189
+ * @since : Created in 2021/6/30 10:47
+ *  人脸信息
+ */
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+
+public class NET_SECURITYGATE_ALARM_FACE_INFO extends NetSDKLib.SdkStructure{
+
+    /**
+     *  性别,参考枚举{@link com.ruoyi.device.dhsdk.lib.enumeration.EM_SECURITYGATE_SEX_TYPE }
+     */
+    public int emSex;				// 性别
+    public   int											nAge; // 年龄
+    /**
+     *  人脸表情,参考枚举{@link com.ruoyi.device.dhsdk.lib.enumeration.EM_SECURITYGATE_EXPRESSION_TYPE }
+     */
+    public int emEmotion;			// 人脸表情
+
+    /**
+     *  是否戴眼镜,参考枚举{@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_ALARM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_ALARM_INFO.java
new file mode 100644
index 0000000..bd36e17
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_ALARM_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_ALARM_STATISTICS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_ALARM_STATISTICS_INFO.java
new file mode 100644
index 0000000..670a941
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_ALARM_STATISTICS_INFO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_CANDIDATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_CANDIDATE.java
new file mode 100644
index 0000000..a528436
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_CANDIDATE.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_PERSON.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_PERSON.java
new file mode 100644
index 0000000..9e4efd3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SECURITYGATE_PERSON.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SENIOR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SENIOR_INFO.java
new file mode 100644
index 0000000..d8329cb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SENIOR_INFO.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SENSOR_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SENSOR_STATE.java
new file mode 100644
index 0000000..b9b8684
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SENSOR_STATE.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SET_POLLING_CONFIG_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SET_POLLING_CONFIG_INFO.java
new file mode 100644
index 0000000..280a93b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SET_POLLING_CONFIG_INFO.java
@@ -0,0 +1,57 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SHIELD_ZOOM_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SHIELD_ZOOM_CAPS.java
new file mode 100644
index 0000000..3642102
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SHIELD_ZOOM_CAPS.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SHOESCOVER_ATTRIBUTE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SHOESCOVER_ATTRIBUTE.java
new file mode 100644
index 0000000..66f288a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SHOESCOVER_ATTRIBUTE.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_COMPLIANCE_STATE;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SIGNAL_ROAD_LIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SIGNAL_ROAD_LIST_INFO.java
new file mode 100644
index 0000000..7887291
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SIGNAL_ROAD_LIST_INFO.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SIGNAL_VEHICLE_DETECTOR_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SIGNAL_VEHICLE_DETECTOR_INFO.java
new file mode 100644
index 0000000..46f7eb9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SIGNAL_VEHICLE_DETECTOR_INFO.java
@@ -0,0 +1,90 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SIP_SERVER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SIP_SERVER_INFO.java
new file mode 100644
index 0000000..c3afa09
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SIP_SERVER_INFO.java
@@ -0,0 +1,118 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_SERVER_OPTION;
+import com.sun.jna.Pointer;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_CLOTHES.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_CLOTHES.java
new file mode 100644
index 0000000..1456cc0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_CLOTHES.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_SMART_KITCHEN_CLOTHES_STATE} */
+	public int[] emChefClothesColor=new int[3];	    /** 厨师服颜色 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_SMART_KITCHEN_CLOTHES_COLOUR} */
+	public byte[]	byReserved=new byte[1024];	   	// 预留字段
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_HAT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_HAT.java
new file mode 100644
index 0000000..270c31a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_HAT.java
@@ -0,0 +1,16 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_SMART_KITCHEN_CLOTHES_STATE} */
+    public 	byte[]			byReserved=new		byte[1024];	// 预留字段
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_MASK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_MASK.java
new file mode 100644
index 0000000..0d52666
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_MASK.java
@@ -0,0 +1,16 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_SMART_KITCHEN_CLOTHES_STATE} */
+    public 	byte[]							byReserved=new byte[1024];	// 预留字段
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMART_VALUE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMART_VALUE_INFO.java
new file mode 100644
index 0000000..872c558
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMART_VALUE_INFO.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMOKE_DETECTION_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMOKE_DETECTION_RULE_INFO.java
new file mode 100644
index 0000000..ceef7bb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMOKE_DETECTION_RULE_INFO.java
@@ -0,0 +1,45 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.lib.enumeration.NET_EM_SCENEDETECTION_TYPE;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+/**
+ * @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 POINTCOORDINATE[]				stuDetectRegion=(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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMOKING_DETECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMOKING_DETECT.java
new file mode 100644
index 0000000..85b1860
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SMOKING_DETECT.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPACE_MODE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPACE_MODE_INFO.java
new file mode 100644
index 0000000..aa69978
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPACE_MODE_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPECIAL_DATE_PLANS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPECIAL_DATE_PLANS_INFO.java
new file mode 100644
index 0000000..35888b9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPECIAL_DATE_PLANS_INFO.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPECIAL_DATE_PLAN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPECIAL_DATE_PLAN_INFO.java
new file mode 100644
index 0000000..a0dbe93
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPECIAL_DATE_PLAN_INFO.java
@@ -0,0 +1,50 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPECIAL_DAYS_SCHEDULE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPECIAL_DAYS_SCHEDULE.java
new file mode 100644
index 0000000..4f2ccc4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPECIAL_DAYS_SCHEDULE.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+public class NET_SPECIAL_DAYS_SCHEDULE extends NetSDKLib.SdkStructure {
+    /**
+     * 是否支持假日计划
+     */
+    public boolean								bSupport;
+    /**
+     * 设备支持的最大计划数量
+     */
+    public int									nMaxSpecialDaysSchedules;
+    /**
+     * 每天最多的时间段
+     */
+    public int									nMaxTimePeriodsPerDay;
+    /**
+     * 设备支持的最大假日组数
+     */
+    public int									nMaxSpecialDayGroups;
+    /**
+     * ,每个假日组里最大的假日数
+     */
+    public int									nMaxDaysInSpecialDayGroup;
+    /**
+     * 保留字节
+     */
+    public byte[]								byReserved=new byte[128];
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPECIAL_DAYS_SCHEDULE_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPECIAL_DAYS_SCHEDULE_CAPS.java
new file mode 100644
index 0000000..1836286
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPECIAL_DAYS_SCHEDULE_CAPS.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPEED_LIMIT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPEED_LIMIT.java
new file mode 100644
index 0000000..ac9541f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPEED_LIMIT.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPLIT_OSD.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPLIT_OSD.java
new file mode 100644
index 0000000..8898263
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SPLIT_OSD.java
@@ -0,0 +1,88 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STAFF_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STAFF_INFO.java
new file mode 100644
index 0000000..ebabf33
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STAFF_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.DH_POINT;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.lib.enumeration.NET_EM_STAFF_TYPE;
+/**
+ * @description  标尺信息
+ * @author 119178
+ * @date 2021/3/16
+ */
+public class NET_STAFF_INFO extends SdkStructure{
+	/**
+	 * 起始坐标点
+	 */
+	public DH_POINT            stuStartLocation=new DH_POINT();
+	/**
+	 * 终止坐标点
+	 */
+	public DH_POINT            stuEndLocation=new DH_POINT();
+	/**
+	 * 实际长度,单位米
+	 */
+	public float               nLenth;
+	/**
+	 * 标尺类型
+	 * {@link NET_EM_STAFF_TYPE}
+	 */
+	public int                 emType;                
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_START_FIND_WATERDATA_CONDITION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_START_FIND_WATERDATA_CONDITION.java
new file mode 100644
index 0000000..1038cd0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_START_FIND_WATERDATA_CONDITION.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STAT_ATTRIBUTE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STAT_ATTRIBUTE.java
new file mode 100644
index 0000000..db7f155
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STAT_ATTRIBUTE.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STAT_ATTRMAP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STAT_ATTRMAP.java
new file mode 100644
index 0000000..23c64f1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STAT_ATTRMAP.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STAT_DETAIL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STAT_DETAIL.java
new file mode 100644
index 0000000..8f8c632
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STAT_DETAIL.java
@@ -0,0 +1,46 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STJ77D5_RADAR_CONFIG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STJ77D5_RADAR_CONFIG.java
new file mode 100644
index 0000000..a576dd5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STJ77D5_RADAR_CONFIG.java
@@ -0,0 +1,45 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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 int[]    nLaneDirection = new int[4];    // 车道方向,
+    public double    dbCameraToRoadEndDistance;    // 相机到车道监控面路口距离, 单位:m, 0.1m/bit(精确到小数点后一位,步长0.1m)
+    public double    dbCameraToStopLane;    // 相机到停止线距离, 单位:m, 0.1m/bit(精确到小数点后一位,步长0.1m)
+    public int    nLaneDirectionCount;    // 车道个数
+    public byte[]    bReserved = new byte[1020];    // 保留字节
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_DEVICE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_DEVICE.java
new file mode 100644
index 0000000..40e3fc2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_DEVICE.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_PARTITION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_PARTITION.java
new file mode 100644
index 0000000..a132826
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_PARTITION.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_PARTITION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_PARTITION_INFO.java
new file mode 100644
index 0000000..0a7956f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_PARTITION_INFO.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_RAID.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_RAID.java
new file mode 100644
index 0000000..4f194d5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_RAID.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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编码
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_TANK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_TANK.java
new file mode 100644
index 0000000..67812b6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STORAGE_TANK.java
@@ -0,0 +1,16 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STREAM_CFG_CAPS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STREAM_CFG_CAPS.java
new file mode 100644
index 0000000..51ab3e5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STREAM_CFG_CAPS.java
@@ -0,0 +1,117 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_H264_PROFILE_RANK;
+import com.ruoyi.device.dhsdk.lib.enumeration.STREAM_RATE_TYPE;
+import com.ruoyi.device.dhsdk.lib.enumeration.TALK_CODING_TYPE;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STU_LOG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STU_LOG.java
new file mode 100644
index 0000000..d2f4cce
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STU_LOG.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STU_OLD_LOG.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STU_OLD_LOG.java
new file mode 100644
index 0000000..f1c45a4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_STU_OLD_LOG.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SUBBIZ_DISCONNECT_CALLBACK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SUBBIZ_DISCONNECT_CALLBACK.java
new file mode 100644
index 0000000..a59bb4f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SUBBIZ_DISCONNECT_CALLBACK.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SUBLINK_SERVER_CALLBACK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SUBLINK_SERVER_CALLBACK.java
new file mode 100644
index 0000000..1945e14
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SUBLINK_SERVER_CALLBACK.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+子链接监听服务回调信息
+*/
+public class NET_SUBLINK_SERVER_CALLBACK extends NetSDKLib.SdkStructure {
+/** 
+/< 子连接状态  {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SYSTEM_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SYSTEM_STATUS.java
new file mode 100644
index 0000000..014a7f3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SYSTEM_STATUS.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SYSTEM_STATUS_CHECK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SYSTEM_STATUS_CHECK_INFO.java
new file mode 100644
index 0000000..df395c9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_SYSTEM_STATUS_CHECK_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEMPERATUREEX_VALUE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEMPERATUREEX_VALUE.java
new file mode 100644
index 0000000..db3bf43
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEMPERATUREEX_VALUE.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 每个监测点的温度
+ * @date 2022/05/12 16:32:08
+ */
+public class NET_TEMPERATUREEX_VALUE extends NetSDKLib.SdkStructure {
+	/**
+	 * 温度类型 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEMPERATURE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEMPERATURE_INFO.java
new file mode 100644
index 0000000..e79fcb5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEMPERATURE_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEMPERATURE_STATISTICS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEMPERATURE_STATISTICS_INFO.java
new file mode 100644
index 0000000..3087f05
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEMPERATURE_STATISTICS_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEMPERATURE_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEMPERATURE_STATUS.java
new file mode 100644
index 0000000..96f9903
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEMPERATURE_STATUS.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEST_RESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEST_RESULT.java
new file mode 100644
index 0000000..c23a9fa
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TEST_RESULT.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THERMAL_IMAGE_MEASURE_MODE_PARAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THERMAL_IMAGE_MEASURE_MODE_PARAM.java
new file mode 100644
index 0000000..b017856
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THERMAL_IMAGE_MEASURE_MODE_PARAM.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_DEVLIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_DEVLIST_INFO.java
new file mode 100644
index 0000000..b33a2a2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_DEVLIST_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_HISTORYDATA.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_HISTORYDATA.java
new file mode 100644
index 0000000..bd3563c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_HISTORYDATA.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_HISTORYDATA_PROPER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_HISTORYDATA_PROPER_INFO.java
new file mode 100644
index 0000000..ae6f28a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_HISTORYDATA_PROPER_INFO.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_RULECONTENT_ACTION_SETPROPERTY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_RULECONTENT_ACTION_SETPROPERTY.java
new file mode 100644
index 0000000..ea0b7b5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_RULECONTENT_ACTION_SETPROPERTY.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_PROPERTIES_VALUE_TYPE}
+*/
+public			int					emPropertyValueType;
+/** 
+保留字节
+*/
+public			byte[]					szReserve=new byte[256];
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_RULECONTENT_CONDITION_PROPERTY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_RULECONTENT_CONDITION_PROPERTY.java
new file mode 100644
index 0000000..72766ce
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_RULECONTENT_CONDITION_PROPERTY.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_PROPERTIES_VALUE_TYPE}
+*/
+public			int					emCompareValueType;
+/** 
+保留字节
+*/
+public			byte[]					szReserve=new byte[256];
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_RULECONTENT_TRIGGER_PROPERTY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_RULECONTENT_TRIGGER_PROPERTY.java
new file mode 100644
index 0000000..3a22ab6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_RULECONTENT_TRIGGER_PROPERTY.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_PROPERTIES_VALUE_TYPE}
+     */
+    public int emCompareValueType;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserve = new byte[256];
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_RULECONTENT_TRIGGER_TIMER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_RULECONTENT_TRIGGER_TIMER.java
new file mode 100644
index 0000000..5927663
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_RULECONTENT_TRIGGER_TIMER.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_CURRENTSTATUSGET_STATUS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_CURRENTSTATUSGET_STATUS.java
new file mode 100644
index 0000000..3be6872
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_CURRENTSTATUSGET_STATUS.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_THINGS_CURRENTSTATUSGET_STATUS}
+     */
+    public int emStatus;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserve = new byte[512];
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_DELDEVICE_LIST.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_DELDEVICE_LIST.java
new file mode 100644
index 0000000..5409a34
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_DELDEVICE_LIST.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_QUERULE_RULECONTENT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_QUERULE_RULECONTENT.java
new file mode 100644
index 0000000..7932933
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_QUERULE_RULECONTENT.java
@@ -0,0 +1,57 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_QUERULE_RULES.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_QUERULE_RULES.java
new file mode 100644
index 0000000..eb0be90
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_QUERULE_RULES.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT.java
new file mode 100644
index 0000000..9bdd760
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT.java
@@ -0,0 +1,45 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_ACTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_ACTION.java
new file mode 100644
index 0000000..48058e5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_ACTION.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_CONDITION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_CONDITION.java
new file mode 100644
index 0000000..ad1aa98
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_CONDITION.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_TRIGGER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_TRIGGER.java
new file mode 100644
index 0000000..d2f2fef
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_TRIGGER.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_START_HISTORYDATA_TOPICS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_START_HISTORYDATA_TOPICS.java
new file mode 100644
index 0000000..6c8afb5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_START_HISTORYDATA_TOPICS.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_TRIGGER_TIMER_CORN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_TRIGGER_TIMER_CORN.java
new file mode 100644
index 0000000..e1f97e4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_THINGS_TRIGGER_TIMER_CORN.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TIME.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TIME.java
new file mode 100644
index 0000000..2691087
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TIME.java
@@ -0,0 +1,76 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TIME_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TIME_EX.java
new file mode 100644
index 0000000..2ec7e17
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TIME_EX.java
@@ -0,0 +1,58 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TIME_EX1.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TIME_EX1.java
new file mode 100644
index 0000000..891f9c5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TIME_EX1.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TIME_RECORDBACKUP_TASK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TIME_RECORDBACKUP_TASK.java
new file mode 100644
index 0000000..fb563de
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TIME_RECORDBACKUP_TASK.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFICCAR_ORIGINAL_VEHICLE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFICCAR_ORIGINAL_VEHICLE.java
new file mode 100644
index 0000000..837a1cf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFICCAR_ORIGINAL_VEHICLE.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFICLIGHT_CHANNEL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFICLIGHT_CHANNEL_INFO.java
new file mode 100644
index 0000000..73112a5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFICLIGHT_CHANNEL_INFO.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFICLIGHT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFICLIGHT_INFO.java
new file mode 100644
index 0000000..22fefff
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFICLIGHT_INFO.java
@@ -0,0 +1,49 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_ACCIDENT_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_ACCIDENT_RULE_INFO.java
new file mode 100644
index 0000000..394d9da
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_ACCIDENT_RULE_INFO.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+/**
+ * @description 事件类型EVENT_IVS_TRAFFICACCIDENT(交通事故) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_ACCIDENT_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public POINTCOORDINATE[]				stuDetectRegion=(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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_BACKING_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_BACKING_RULE_INFO.java
new file mode 100644
index 0000000..6052954
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_BACKING_RULE_INFO.java
@@ -0,0 +1,77 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.DH_POINT;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+
+/**
+ * @description 事件类型EVENT_IVS_TRAFFIC_BACKING(倒车) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_BACKING_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public POINTCOORDINATE[]				stuDetectRegion=(POINTCOORDINATE[])new POINTCOORDINATE().toArray(20);
+	/**
+	 * 检测区顶点数
+	 */
+	public int							nDetectRegionPoint;		
+	/**
+	 * 车道编号 与场景中的车道号对应
+	 */
+	public int							nLaneNumber;
+	/**
+	 * 起点,从起点到终点是正向行驶,反过来是逆行,点的坐标归一化到[0,8192)区间。
+	 */
+	public 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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_CAR_ATTRIBUTE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_CAR_ATTRIBUTE_INFO.java
new file mode 100644
index 0000000..334a176
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_CAR_ATTRIBUTE_INFO.java
@@ -0,0 +1,63 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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;
+    /**
+     * 车身颜色
+     */
+    public int[] emVehicleColorArray = new int[32];
+    /**
+     * 车辆类型的个数,最大值是32
+     */
+    public int nCategoryArrayNums;
+    /**
+     * 车辆类型
+     */
+    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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_CROSSLANE_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_CROSSLANE_RULE_INFO.java
new file mode 100644
index 0000000..c0ec909
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_CROSSLANE_RULE_INFO.java
@@ -0,0 +1,76 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.DH_POINT;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+/**
+ * @description 事件类型EVENT_IVS_TRAFFIC_CROSSLANE(违章变道事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_CROSSLANE_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public POINTCOORDINATE[]				stuDetectRegion=(POINTCOORDINATE[])new POINTCOORDINATE().toArray(20);
+	/**
+	 * 检测区顶点数
+	 */
+	public int							nDetectRegionPoint;		
+	/**
+	 * 车道编号 与场景中的车道号对应
+	 */
+	public int							nLaneNumber;
+	/**
+	 * 起点,从起点到终点是正向行驶,反过来是逆行,点的坐标归一化到[0,8192)区间。
+	 */
+	public 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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_FLOWSTAT_INFO_DIR.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_FLOWSTAT_INFO_DIR.java
new file mode 100644
index 0000000..320cdca
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_FLOWSTAT_INFO_DIR.java
@@ -0,0 +1,48 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Arrays;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_FLOWSTAT_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_FLOWSTAT_RULE_INFO.java
new file mode 100644
index 0000000..d3be062
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_FLOWSTAT_RULE_INFO.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.DH_POINT;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+/**
+ * @description 事件类型EVENT_IVS_TRAFFIC_FLOWSTATE(交通流量统计事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_FLOWSTAT_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public POINTCOORDINATE[]				stuDetectRegion = (POINTCOORDINATE[])new POINTCOORDINATE().toArray(20);	
+	/**
+	 * 检测区顶点数
+	 */
+	public int							nDetectRegionPoint;
+	/**
+	 * 规则检测线顶点数
+	 */
+	public int							nDetectLineNum;			
+	/**
+	 * 规则检测线
+	 */
+	public DH_POINT[]				DetectLine = (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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_FLOW_STAT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_FLOW_STAT.java
new file mode 100644
index 0000000..f07a670
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_FLOW_STAT.java
@@ -0,0 +1,61 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_DETECT_SENSOR_TYPE;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_TRAFFIC_FLOW_STATUS;
+import com.ruoyi.device.dhsdk.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 byte[] byReserverd = new byte[240];
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_FLOW_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_FLOW_STATE.java
new file mode 100644
index 0000000..889ea78
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_FLOW_STATE.java
@@ -0,0 +1,339 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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 byte[] reserved = new byte[712];
+
+    @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_JAM_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_JAM_RULE_INFO.java
new file mode 100644
index 0000000..f3ac753
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_JAM_RULE_INFO.java
@@ -0,0 +1,75 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+/**
+ * @description 事件类型EVENT_IVS_TRAFFICJAM(交通拥堵事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_JAM_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public POINTCOORDINATE[]				stuDetectRegion=(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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_LATTICE_SCREEN_ALARM_NOTICE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_LATTICE_SCREEN_ALARM_NOTICE_INFO.java
new file mode 100644
index 0000000..eb0bd01
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_LATTICE_SCREEN_ALARM_NOTICE_INFO.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_LATTICE_SCREEN_LOGO_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_LATTICE_SCREEN_LOGO_INFO.java
new file mode 100644
index 0000000..d2a0839
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_LATTICE_SCREEN_LOGO_INFO.java
@@ -0,0 +1,15 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.NET_EM_LATTICE_SCREEN_LOGO_TYPE} */
+   public byte[]		szContent=new byte[128];		// emLogoType为文字时,为文字内容;emLogoType为图片时,为图片名称
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_LIGHT_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_LIGHT_STATE.java
new file mode 100644
index 0000000..c755aa5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_LIGHT_STATE.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_OVERSPEED_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_OVERSPEED_RULE_INFO.java
new file mode 100644
index 0000000..89ab22c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_OVERSPEED_RULE_INFO.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_OVERYELLOWLINE_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_OVERYELLOWLINE_RULE_INFO.java
new file mode 100644
index 0000000..e85ce36
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_OVERYELLOWLINE_RULE_INFO.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+/**
+ * @description 事件类型EVENT_IVS_TRAFFIC_OVERYELLOWLINE(压黄线事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_OVERYELLOWLINE_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public POINTCOORDINATE[]				stuDetectRegion = (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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_PARKING_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_PARKING_RULE_INFO.java
new file mode 100644
index 0000000..75136e0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_PARKING_RULE_INFO.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+
+public class NET_TRAFFIC_PARKING_RULE_INFO extends SdkStructure{
+	/**
+     * 检测区域
+     */
+    public POINTCOORDINATE[]       stuDetectRegion=(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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_PEDESTRAIN_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_PEDESTRAIN_RULE_INFO.java
new file mode 100644
index 0000000..8219077
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_PEDESTRAIN_RULE_INFO.java
@@ -0,0 +1,63 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+/**
+ * @description 事件类型EVENT_IVS_TRAFFIC_PEDESTRAIN(交通行人事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_PEDESTRAIN_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public POINTCOORDINATE[]				stuDetectRegion=(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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_RETROGRADE_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_RETROGRADE_RULE_INFO.java
new file mode 100644
index 0000000..c702bc1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_RETROGRADE_RULE_INFO.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.DH_POINT;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+
+public class NET_TRAFFIC_RETROGRADE_RULE_INFO extends SdkStructure{
+	/**
+     * 检测区域
+     */
+    public POINTCOORDINATE[]       stuDetectRegion=(POINTCOORDINATE[]) new POINTCOORDINATE().toArray(20);
+    /**
+     * 检测区域顶点数
+     */
+    public int					    nDetectRegionPoint;
+    public byte[]                        byReserved1 = new byte[4];							// 字节对齐
+	/**
+	 * 起点,从起点到终点是正向行驶,反过来是逆行,点的坐标归一化到[0,8192)区间。
+	 */
+	public	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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_ROAD_BLOCK_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_ROAD_BLOCK_RULE_INFO.java
new file mode 100644
index 0000000..04dd533
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_ROAD_BLOCK_RULE_INFO.java
@@ -0,0 +1,48 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+/**
+ * @description 事件类型EVENT_IVS_TRAFFIC_ROAD_BLOCK(交通路障检测事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_ROAD_BLOCK_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public POINTCOORDINATE[]				stuDetectRegion=(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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_ROAD_CONSTRUCTION_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_ROAD_CONSTRUCTION_RULE_INFO.java
new file mode 100644
index 0000000..f80c21a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_ROAD_CONSTRUCTION_RULE_INFO.java
@@ -0,0 +1,48 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+/**
+ * @description 事件类型EVENT_IVS_TRAFFIC_ROAD_CONSTRUCTION(交通道路施工检测事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_ROAD_CONSTRUCTION_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public POINTCOORDINATE[]				stuDetectRegion=(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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_THROW_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_THROW_RULE_INFO.java
new file mode 100644
index 0000000..ded5d81
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_THROW_RULE_INFO.java
@@ -0,0 +1,63 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+/**
+ * @description 事件类型EVENT_IVS_TRAFFIC_THROW(抛洒物事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_THROW_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public POINTCOORDINATE[]				stuDetectRegion=(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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_UNDERSPEED_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_UNDERSPEED_RULE_INFO.java
new file mode 100644
index 0000000..c37d750
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAFFIC_UNDERSPEED_RULE_INFO.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRANSMIT_DISCONNECT_CALLBACK.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRANSMIT_DISCONNECT_CALLBACK.java
new file mode 100644
index 0000000..7b8adc6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRANSMIT_DISCONNECT_CALLBACK.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAVEL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAVEL_INFO.java
new file mode 100644
index 0000000..7cad79d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TRAVEL_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TSECT_DAY.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TSECT_DAY.java
new file mode 100644
index 0000000..30e1b85
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_TSECT_DAY.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_UINT_POINT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_UINT_POINT.java
new file mode 100644
index 0000000..d1c7a12
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_UINT_POINT.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_UPDATE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_UPDATE_INFO.java
new file mode 100644
index 0000000..bfe2c1a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_UPDATE_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 区域或车位更新信息
+ * @date 2022/05/11 13:27:51
+ */
+public class NET_UPDATE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 更新类型 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_UPDATE_TYPE}
+	 */
+	public int emType;
+	/**
+	 * 更新的区域或车位名称
+	 */
+	public byte[] szName = new byte[32];
+	/**
+	 * 更新前的车位类型 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_SPACE_TYPE}
+	 */
+	public int emBeforeUpdateType;
+	/**
+	 * 更新后的车位类型 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_UPLOAD_CLIENT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_UPLOAD_CLIENT_INFO.java
new file mode 100644
index 0000000..0b06519
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_UPLOAD_CLIENT_INFO.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_USER_DEF_TITLE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_USER_DEF_TITLE_INFO.java
new file mode 100644
index 0000000..3b45992
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_USER_DEF_TITLE_INFO.java
@@ -0,0 +1,47 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_USER_PICTURE_DATA.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_USER_PICTURE_DATA.java
new file mode 100644
index 0000000..2cefb1c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_USER_PICTURE_DATA.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VACCINE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VACCINE_INFO.java
new file mode 100644
index 0000000..7779058
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VACCINE_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAGEOBJECT_IMAGE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAGEOBJECT_IMAGE.java
new file mode 100644
index 0000000..5c3fc5f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAGEOBJECT_IMAGE.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAGEOBJECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAGEOBJECT_INFO.java
new file mode 100644
index 0000000..bc6ab31
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAGEOBJECT_INFO.java
@@ -0,0 +1,74 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAOBJECT_ANIMAL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAOBJECT_ANIMAL_INFO.java
new file mode 100644
index 0000000..cc3c6a3
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAOBJECT_ANIMAL_INFO.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAOBJECT_NUMMAN.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAOBJECT_NUMMAN.java
new file mode 100644
index 0000000..8b44cec
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAOBJECT_NUMMAN.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_RECT;
+import com.ruoyi.device.dhsdk.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 NET_RECT				stuBoundingBox;                     // 包围盒,手套对象在全景图中的框坐标,为0~8191相对坐标
+	public NET_RECT				stuOriginalBoundingBox;             // 包围盒,绝对坐标
+	public byte[] 				byReserved = new byte[128];         // 预留字节
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VARLANE_PLAN_LIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VARLANE_PLAN_LIST_INFO.java
new file mode 100644
index 0000000..b49ee6b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VARLANE_PLAN_LIST_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAR_LANE_LIST_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAR_LANE_LIST_INFO.java
new file mode 100644
index 0000000..a001bbb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VAR_LANE_LIST_INFO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEDIO_WIDGET_COVER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEDIO_WIDGET_COVER.java
new file mode 100644
index 0000000..d9e06b5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEDIO_WIDGET_COVER.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_DRIVING_DIRECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_DRIVING_DIRECTION_INFO.java
new file mode 100644
index 0000000..acf37c5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_DRIVING_DIRECTION_INFO.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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];
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_FUSED_OBJECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_FUSED_OBJECT.java
new file mode 100644
index 0000000..29b0d77
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_FUSED_OBJECT.java
@@ -0,0 +1,76 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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 byte[] szReserved = new byte[3864];
+
+    public NET_VEHICLE_FUSED_OBJECT() {
+    }
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_GROUP_FOUND_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_GROUP_FOUND_INFO.java
new file mode 100644
index 0000000..13abd89
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_GROUP_FOUND_INFO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_GROUP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_GROUP_INFO.java
new file mode 100644
index 0000000..cfc13a8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_GROUP_INFO.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_OBJECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_OBJECT.java
new file mode 100644
index 0000000..e5790b8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VEHICLE_OBJECT.java
@@ -0,0 +1,132 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_DETECT_SENSOR_TYPE;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_VEHICLEINOUT_CAR_TYPE;
+
+/**
+ * 车辆信息
+ *
+ * @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();
+        }
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOABNORMALDETECTION_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOABNORMALDETECTION_RULE_INFO.java
new file mode 100644
index 0000000..70be0b4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOABNORMALDETECTION_RULE_INFO.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * 事件类型EVENT_IVS_VIDEOABNORMALDETECTION(视频异常)对应的规则配置
+ */
+public class NET_VIDEOABNORMALDETECTION_RULE_INFO extends SdkStructure {
+    /**
+     * 检测类型数
+     */
+    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];
+    /**
+     * 最短持续时间	单位:秒,0~65535
+     */
+    public int					    nMinDuration;
+    /**
+     * 灵敏度, 取值1-10,值越小灵敏度越低(只对检测类型视频遮挡,过亮,过暗,场景变化有效)
+     */
+     public int                     nSensitivity;
+    /**
+     * 异常检测阈值数量
+     */
+    public int					    nThresholdNum;
+    /**
+     * 异常检测阈值,范围1~100
+     */
+    public int[]					nThreshold=new int[32];
+    /**
+     * 保留字节
+     */
+    public byte[]				    byReserved=new byte[4096];
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOCHANNELS_INPUT_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOCHANNELS_INPUT_EX.java
new file mode 100644
index 0000000..ae21cff
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOCHANNELS_INPUT_EX.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEODIAGNOSIS_PROJECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEODIAGNOSIS_PROJECT_INFO.java
new file mode 100644
index 0000000..f2328ae
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEODIAGNOSIS_PROJECT_INFO.java
@@ -0,0 +1,16 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOIN_DEFOG_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOIN_DEFOG_INFO.java
new file mode 100644
index 0000000..b49e87e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOIN_DEFOG_INFO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_CROWD_DISTRI_MAP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_CROWD_DISTRI_MAP.java
new file mode 100644
index 0000000..f80f0e0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_CROWD_DISTRI_MAP.java
@@ -0,0 +1,41 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_INSIDESUBTOTAL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_INSIDESUBTOTAL_INFO.java
new file mode 100644
index 0000000..cc98cd4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_INSIDESUBTOTAL_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_HEAD_LIFT_DETECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_HEAD_LIFT_DETECTION.java
new file mode 100644
index 0000000..198c160
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_HEAD_LIFT_DETECTION.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_INTELLIPARKING.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_INTELLIPARKING.java
new file mode 100644
index 0000000..57b85c2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_INTELLIPARKING.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_STEREO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_STEREO.java
new file mode 100644
index 0000000..2bd72f8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_STEREO.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_TANK_CAPACITY_DETECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_TANK_CAPACITY_DETECTION.java
new file mode 100644
index 0000000..2ffb5f4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_TANK_CAPACITY_DETECTION.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOTALK_SIGNLIGHT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOTALK_SIGNLIGHT_INFO.java
new file mode 100644
index 0000000..dccf1ea
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEOTALK_SIGNLIGHT_INFO.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_ALGORITHMTYPE_DETECTIONRESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_ALGORITHMTYPE_DETECTIONRESULT.java
new file mode 100644
index 0000000..7b9ac2f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_ALGORITHMTYPE_DETECTIONRESULT.java
@@ -0,0 +1,52 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_ANALYSE_ANALYSE_PROC.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_ANALYSE_ANALYSE_PROC.java
new file mode 100644
index 0000000..691bb5e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_ANALYSE_ANALYSE_PROC.java
@@ -0,0 +1,63 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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;
+
+    public NET_VIDEO_ANALYSE_ANALYSE_PROC(){
+        int size = new PointerSize().size();
+        szReserved=new byte[1916-size*32];
+    }
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_AVAILABILITY_DETECTIONRESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_AVAILABILITY_DETECTIONRESULT.java
new file mode 100644
index 0000000..7a5f066
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_AVAILABILITY_DETECTIONRESULT.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_DELAY_DETECTIONRESUL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_DELAY_DETECTIONRESUL.java
new file mode 100644
index 0000000..137579b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_DELAY_DETECTIONRESUL.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_DIAGNOSIS_COMPARE_RECORD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_DIAGNOSIS_COMPARE_RECORD_INFO.java
new file mode 100644
index 0000000..13fdc55
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_DIAGNOSIS_COMPARE_RECORD_INFO.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.CFG_NET_TIME;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_DIAGNOSIS_RECORD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_DIAGNOSIS_RECORD_INFO.java
new file mode 100644
index 0000000..f48ba70
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_DIAGNOSIS_RECORD_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_SOURCE_VIDEO_LOCATION;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_FILCKERING_DETECTION_RESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_FILCKERING_DETECTION_RESULT.java
new file mode 100644
index 0000000..f101a9f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_FILCKERING_DETECTION_RESULT.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_LOSS_FRAME_DETECTION_RESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_LOSS_FRAME_DETECTION_RESULT.java
new file mode 100644
index 0000000..1dcdd30
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_LOSS_FRAME_DETECTION_RESULT.java
@@ -0,0 +1,21 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_SNOWFLAKE_DETECTIONRESULT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_SNOWFLAKE_DETECTIONRESULT.java
new file mode 100644
index 0000000..55448e0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VIDEO_SNOWFLAKE_DETECTIONRESULT.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VKINFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VKINFO.java
new file mode 100644
index 0000000..874651e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VKINFO.java
@@ -0,0 +1,46 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_ALGORITHM_TYPE}
+	 */
+	public int emAlgorithmType;
+	/**
+	 * 返回的VKID字段的实际大小
+	 */
+	public int nRetVKIDLen;
+	/**
+	 * 返回的VK实际大小
+	 */
+	public int nRetVKLen;
+	/**
+	 * 是否加密 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_IS_ENCRYPT}
+	 */
+	public int emIsEncrypt;
+	/**
+	 * 是否是当前VK 0 :未知,1:当前, 2:之前 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VOTE_SETTINGS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VOTE_SETTINGS_INFO.java
new file mode 100644
index 0000000..b963fc8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VOTE_SETTINGS_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VSP_GAVI_CHANNEL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VSP_GAVI_CHANNEL_INFO.java
new file mode 100644
index 0000000..2420cdb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VSP_GAVI_CHANNEL_INFO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VSP_GAVI_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VSP_GAVI_INFO.java
new file mode 100644
index 0000000..8fc25b0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VSP_GAVI_INFO.java
@@ -0,0 +1,79 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VSP_GAVI_NOTIFY_OBJECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VSP_GAVI_NOTIFY_OBJECT.java
new file mode 100644
index 0000000..18c3edf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VSP_GAVI_NOTIFY_OBJECT.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VSP_GAVI_PLATFORM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VSP_GAVI_PLATFORM_INFO.java
new file mode 100644
index 0000000..ab8d2a9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_VSP_GAVI_PLATFORM_INFO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WANDERDETECTION_RULE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WANDERDETECTION_RULE_INFO.java
new file mode 100644
index 0000000..7c2c97b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WANDERDETECTION_RULE_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.POINTCOORDINATE;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure;
+
+/** 事件类型 EVENT_IVS_WANDERDETECTION( 徘徊事件)对应的规则配置 */
+public class NET_WANDERDETECTION_RULE_INFO extends SdkStructure {
+  /** 检测区域顶点数 */
+  public int nDetectRegionPoint;
+  /** 检测区域 */
+  public POINTCOORDINATE[] stuDetectRegion = (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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WATERDATA_STAT_SERVER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WATERDATA_STAT_SERVER_INFO.java
new file mode 100644
index 0000000..80076ee
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WATERDATA_STAT_SERVER_INFO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WATER_DETECTION_UPLOAD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WATER_DETECTION_UPLOAD_INFO.java
new file mode 100644
index 0000000..341babc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WATER_DETECTION_UPLOAD_INFO.java
@@ -0,0 +1,105 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WEEKS_PLAN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WEEKS_PLAN_INFO.java
new file mode 100644
index 0000000..ba91837
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WEEKS_PLAN_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WEEK_PLANS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WEEK_PLANS_INFO.java
new file mode 100644
index 0000000..aa7240d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WEEK_PLANS_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WEEK_PLAN_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WEEK_PLAN_INFO.java
new file mode 100644
index 0000000..0f3e124
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WEEK_PLAN_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WIEGAND_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WIEGAND_INFO.java
new file mode 100644
index 0000000..fc33aab
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WIEGAND_INFO.java
@@ -0,0 +1,44 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description 韦根配置
+* @date 2022/03/08 09:56:03
+*/
+public class NET_WIEGAND_INFO extends NetSDKLib.SdkStructure {
+/** 
+工作模式  {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_NET_WIEGAND_MODE}
+*/
+public			int					emMode;
+/** 
+脉冲宽度,单位us
+*/
+public			int					nPulseWidth;
+/** 
+脉冲间隔,单位us
+*/
+public			int					nPulseStep;
+/** 
+传输模式   {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_NET_WIEGAND_TRANSFER_MODE}
+ */
+public			int					emTransferMode;
+/** 
+输出类型  {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WLAN_ACCESSPOINT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WLAN_ACCESSPOINT_INFO.java
new file mode 100644
index 0000000..61ce856
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WLAN_ACCESSPOINT_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_ABSTRACT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_ABSTRACT_INFO.java
new file mode 100644
index 0000000..91f5b08
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_ABSTRACT_INFO.java
@@ -0,0 +1,66 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_APPEND_IDENTI_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_APPEND_IDENTI_INFO.java
new file mode 100644
index 0000000..29d95a5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_APPEND_IDENTI_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_CHANNEL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_CHANNEL_INFO.java
new file mode 100644
index 0000000..229777a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_CHANNEL_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_COMPARE_GROUP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_COMPARE_GROUP_INFO.java
new file mode 100644
index 0000000..227f46a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_COMPARE_GROUP_INFO.java
@@ -0,0 +1,57 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_WORKSUIT_GROUP_POLICY}
+	 */
+	public int emWorkSuitPolicy;
+	/**
+	 * 相似度阈值,范围 [1, 100],默认67
+	 */
+	public int nSimilarity;
+	/**
+	 * 合规组类型 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_SAMPLE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_SAMPLE_INFO.java
new file mode 100644
index 0000000..1d490bb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WORKSUIT_SAMPLE_INFO.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_BUTTON_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_BUTTON_INFO.java
new file mode 100644
index 0000000..2c6c2d0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_BUTTON_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_CAPS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_CAPS_INFO.java
new file mode 100644
index 0000000..ae053c6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_CAPS_INFO.java
@@ -0,0 +1,43 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_IMAGE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_IMAGE_INFO.java
new file mode 100644
index 0000000..aad54f2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_IMAGE_INFO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  图片信息 
+* @date 2022/08/31 14:44:17
+*/
+public class NET_WPAN_ACCESSORY_IMAGE_INFO extends NetSDKLib.SdkStructure {
+/** 
+分辨率 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_INFO.java
new file mode 100644
index 0000000..028dca2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_INFO.java
@@ -0,0 +1,302 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_DETECTOR_STATUS_TYPE}
+*/
+public			int					emState;
+/** 
+设备布防时音量 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_ACCESSORY_VOLUME}
+*/
+public			int					emBeepVolume;
+/** 
+灵敏度 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_ACCESSORY_SENSITIVITY}
+*/
+public			int					emSensentivity;
+/** 
+功率调节 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_POWER_REGULATION_TYPE}
+*/
+public			int					emPowerRegulation;
+/** 
+在线状态 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_ONLINE_STATUS}
+*/
+public			int					emOnline;
+/** 
+报警类型 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_ACCESSORY_ALARM_TYPE}
+*/
+public			int					emAlarmType;
+/** 
+输入类型 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_ACCESSORY_INPUT_TYPE}
+*/
+public			int					emInputType;
+/** 
+LED亮度 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_LED_BRIGHTNESS_LEVEL}
+*/
+public			int					emLedBrightnessLevel;
+/** 
+操作模式 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_OPERATION_MODE}
+*/
+public			int					emOperationMode;
+/** 
+防误按模式 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_ANTI_MISPRESS_TYPE}
+*/
+public			int					emAntiMispress;
+/** 
+外部电源状态,若未开启检测外接电源状态则为未知 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_EXPOWER_STATE}
+*/
+public			int					emExPowerState;
+/** 
+设备报警音量 {@link com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_LOCK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_LOCK_INFO.java
new file mode 100644
index 0000000..50c8205
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ACCESSORY_LOCK_INFO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ARMING_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ARMING_INFO.java
new file mode 100644
index 0000000..3d372a0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_ARMING_INFO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  布防信息 
+* @date 2022/08/31 14:44:18
+*/
+public class NET_WPAN_ARMING_INFO extends NetSDKLib.SdkStructure {
+/** 
+布防模式 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_CARD_READER_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_CARD_READER_INFO.java
new file mode 100644
index 0000000..d0794f4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_CARD_READER_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_EXTERNAL_WIFI_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_EXTERNAL_WIFI_INFO.java
new file mode 100644
index 0000000..56f3edf
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_EXTERNAL_WIFI_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_HEARTBEAT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_HEARTBEAT_INFO.java
new file mode 100644
index 0000000..bc3176a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_HEARTBEAT_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_OVER_TEMPERATURE_ALARM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_OVER_TEMPERATURE_ALARM_INFO.java
new file mode 100644
index 0000000..68431af
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_OVER_TEMPERATURE_ALARM_INFO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_RELAY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_RELAY_INFO.java
new file mode 100644
index 0000000..bf3779f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_RELAY_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  中继状态 
+* @date 2022/08/31 14:44:16
+*/
+public class NET_WPAN_RELAY_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否启用中继转发 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_WIFI_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_WIFI_INFO.java
new file mode 100644
index 0000000..766f752
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WPAN_WIFI_INFO.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WRIST_MEASURE_MODE_PARAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WRIST_MEASURE_MODE_PARAM.java
new file mode 100644
index 0000000..5419be0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_WRIST_MEASURE_MODE_PARAM.java
@@ -0,0 +1,60 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_IMAGE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_IMAGE_INFO.java
new file mode 100644
index 0000000..e58b042
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_IMAGE_INFO.java
@@ -0,0 +1,48 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_INSIDE_ONJECT_TYPE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_INSIDE_ONJECT_TYPE.java
new file mode 100644
index 0000000..7be15c5
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_INSIDE_ONJECT_TYPE.java
@@ -0,0 +1,22 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_MULTILEVEL_DETECT_CFG_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_MULTILEVEL_DETECT_CFG_INFO.java
new file mode 100644
index 0000000..062fabc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_MULTILEVEL_DETECT_CFG_INFO.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_OBJECT_GROUP.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_OBJECT_GROUP.java
new file mode 100644
index 0000000..a2148ba
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_OBJECT_GROUP.java
@@ -0,0 +1,54 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  分组事件联动 
+* @date 2022/12/01 16:27:10
+*/
+public class NET_XRAY_OBJECT_GROUP extends NetSDKLib.SdkStructure {
+/** 
+分组类型 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_INSIDE_OBJECT_TYPE}
+*/
+public			int					emGroupType;
+/** 
+分组检测使能
+*/
+public			int					bGroupEnable;
+/** 
+分组安全等级 {@link com.ruoyi.device.dhsdk.lib.enumeration.EM_GROUP_GRADE_TYPE}
+*/
+public			int					emGroupGrade;
+/** 
+分组物品颜色 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_OBJECT_GROUP_EVENT_HANDLER.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_OBJECT_GROUP_EVENT_HANDLER.java
new file mode 100644
index 0000000..de668d0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_OBJECT_GROUP_EVENT_HANDLER.java
@@ -0,0 +1,55 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_OBJECT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_OBJECT_INFO.java
new file mode 100644
index 0000000..a69a97b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_OBJECT_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  X光机物品 
+* @date 2022/12/01 16:27:10
+*/
+public class NET_XRAY_OBJECT_INFO extends NetSDKLib.SdkStructure {
+/** 
+物体类型 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_RELATED_IMAGE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_RELATED_IMAGE_INFO.java
new file mode 100644
index 0000000..ade5467
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_XRAY_RELATED_IMAGE_INFO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+
+/**
+ * X光机关联图片类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 14:46
+ */
+public class NET_XRAY_RELATED_IMAGE_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     *  图片类型
+     */
+    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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ZONE_ABNORMAL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ZONE_ABNORMAL_INFO.java
new file mode 100644
index 0000000..5a7dca0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NET_ZONE_ABNORMAL_INFO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NEXT_STEP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NEXT_STEP_INFO.java
new file mode 100644
index 0000000..94a29eb
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/NEXT_STEP_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/Net_PIC_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/Net_PIC_INFO.java
new file mode 100644
index 0000000..9109c25
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/Net_PIC_INFO.java
@@ -0,0 +1,19 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/OBJECT_RELATED_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/OBJECT_RELATED_INFO.java
new file mode 100644
index 0000000..8923ef4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/OBJECT_RELATED_INFO.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ObjectPath.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ObjectPath.java
new file mode 100644
index 0000000..2ded476
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ObjectPath.java
@@ -0,0 +1,15 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ObjectUrl.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ObjectUrl.java
new file mode 100644
index 0000000..df05c8c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/ObjectUrl.java
@@ -0,0 +1,14 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/OneDimensionalInformation.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/OneDimensionalInformation.java
new file mode 100644
index 0000000..5359634
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/OneDimensionalInformation.java
@@ -0,0 +1,13 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PASSERBY_DB_DUPLICATE_REMOVE_CONFIG_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PASSERBY_DB_DUPLICATE_REMOVE_CONFIG_INFO.java
new file mode 100644
index 0000000..8213680
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PASSERBY_DB_DUPLICATE_REMOVE_CONFIG_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/POINTCOORDINATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/POINTCOORDINATE.java
new file mode 100644
index 0000000..dac081a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/POINTCOORDINATE.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/POINTINFOS.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/POINTINFOS.java
new file mode 100644
index 0000000..caa2df2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/POINTINFOS.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.NET_EM_SHAPE_TYPE;
+
+import static com.ruoyi.device.dhsdk.lib.NetSDKLib.MAX_COMMON_STRING_64;
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/POSTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/POSTION.java
new file mode 100644
index 0000000..532d110
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/POSTION.java
@@ -0,0 +1,24 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PTZ_NORMALIZED_POSITION_UNIT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PTZ_NORMALIZED_POSITION_UNIT.java
new file mode 100644
index 0000000..4d153dc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PTZ_NORMALIZED_POSITION_UNIT.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PTZ_PRESET_UNIT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PTZ_PRESET_UNIT.java
new file mode 100644
index 0000000..28be46a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PTZ_PRESET_UNIT.java
@@ -0,0 +1,30 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PTZ_SPACE_UNIT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PTZ_SPACE_UNIT.java
new file mode 100644
index 0000000..1f804ca
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PTZ_SPACE_UNIT.java
@@ -0,0 +1,31 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PTZ_SPEED.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PTZ_SPEED.java
new file mode 100644
index 0000000..01e99d7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PTZ_SPEED.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PassingCityByteArr.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PassingCityByteArr.java
new file mode 100644
index 0000000..eac1d4c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PassingCityByteArr.java
@@ -0,0 +1,16 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description  城市名字符串对应字节数组
+ * @date 2021/08/15
+ */
+public class PassingCityByteArr extends NetSDKLib.SdkStructure{
+	/**
+	 *  城市名字符串对应字节数组
+	 */
+	public byte[] passingCityByteArr = new byte[128];
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PlateNumber.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PlateNumber.java
new file mode 100644
index 0000000..809938e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PlateNumber.java
@@ -0,0 +1,13 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PointerSize.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PointerSize.java
new file mode 100644
index 0000000..0282b31
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PointerSize.java
@@ -0,0 +1,15 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PtotoListByteArr.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PtotoListByteArr.java
new file mode 100644
index 0000000..c818659
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/PtotoListByteArr.java
@@ -0,0 +1,15 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description  雷达控制盒支持的协议字符串对应字节数组
+ * @date 2021/09/23
+ */
+public class PtotoListByteArr extends NetSDKLib.SdkStructure{
+	/**
+	 *  雷达控制盒支持的协议字符串对应字节数组
+	 */
+	public byte[] ptotoListByteArr = new byte[32];
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/QUERY_DEVICE_LOG_PARAM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/QUERY_DEVICE_LOG_PARAM.java
new file mode 100644
index 0000000..31a603a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/QUERY_DEVICE_LOG_PARAM.java
@@ -0,0 +1,49 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * 查询条件
+ * @author 47081
+ */
+public class QUERY_DEVICE_LOG_PARAM extends NetSDKLib.SdkStructure {
+    /**
+     * 查询日志类型,类型请参考DH_LOG_QUERY_TYPE
+     */
+    public int   emLogType;
+    /**
+     * 查询日志的开始时间
+     */
+    public NET_TIME            stuStartTime;
+    /**
+     * 查询日志的结束时间
+     */
+    public NET_TIME             stuEndTime;
+    /**
+     * 在时间段中从第几条日志开始查询,开始第一次查询可设为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];
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RADAR_REPORTS_VEHICLE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RADAR_REPORTS_VEHICLE_INFO.java
new file mode 100644
index 0000000..4aa62dd
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RADAR_REPORTS_VEHICLE_INFO.java
@@ -0,0 +1,71 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.lib.enumeration.EM_VEHICLE_DRIVING_DIRECTION}
+*/
+public			int					emDrivingDirection;
+/** 
+车辆到达雷达检测位置的时间
+*/
+public			byte[]					szDetectTime=new byte[32];
+/** 
+车辆的挡板高度(单位:厘米)
+*/
+public			int					nVehicleRailingHigh;
+/** 
+车辆速度(单位:千米/小时)
+*/
+public			int					nVehicleSpeed;
+/** 
+车辆类型 {@link com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RECT.java
new file mode 100644
index 0000000..e1f01b2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RECT.java
@@ -0,0 +1,23 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RELATED_IMAGE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RELATED_IMAGE.java
new file mode 100644
index 0000000..388deef
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RELATED_IMAGE.java
@@ -0,0 +1,20 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RUN_LAMP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RUN_LAMP_INFO.java
new file mode 100644
index 0000000..776f403
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RUN_LAMP_INFO.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RUN_PHASE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RUN_PHASE_INFO.java
new file mode 100644
index 0000000..58de238
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RUN_PHASE_INFO.java
@@ -0,0 +1,45 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RuleTypeByteArr.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RuleTypeByteArr.java
new file mode 100644
index 0000000..ff63b68
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/RuleTypeByteArr.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 规则类型字节数组
+ * @date 2021/09/27
+ */
+public class RuleTypeByteArr extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 单个规则类型
+	 */
+	public byte[] szRuleTypeByteArr = new byte[32];
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SCENE_SUPPORT_RULE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SCENE_SUPPORT_RULE.java
new file mode 100644
index 0000000..0680ad7
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SCENE_SUPPORT_RULE.java
@@ -0,0 +1,191 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_DEVICE_LOG_ITEM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_DEVICE_LOG_ITEM.java
new file mode 100644
index 0000000..94f1350
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_DEVICE_LOG_ITEM.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_DEVICE_LOG_ITEM_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_DEVICE_LOG_ITEM_EX.java
new file mode 100644
index 0000000..e20b06f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_DEVICE_LOG_ITEM_EX.java
@@ -0,0 +1,82 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_DEV_TIME.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_DEV_TIME.java
new file mode 100644
index 0000000..ef39a24
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_DEV_TIME.java
@@ -0,0 +1,90 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_HARDDISK_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_HARDDISK_STATE.java
new file mode 100644
index 0000000..42e0b6b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_HARDDISK_STATE.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_LOG_ITEM.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_LOG_ITEM.java
new file mode 100644
index 0000000..3687cf9
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_LOG_ITEM.java
@@ -0,0 +1,32 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_PIC_INFO_EX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_PIC_INFO_EX.java
new file mode 100644
index 0000000..a3fb23c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_PIC_INFO_EX.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_TSECT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_TSECT.java
new file mode 100644
index 0000000..731a182
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SDK_TSECT.java
@@ -0,0 +1,42 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SOLARCELL_BATTERY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SOLARCELL_BATTERY_INFO.java
new file mode 100644
index 0000000..5b98e45
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SOLARCELL_BATTERY_INFO.java
@@ -0,0 +1,37 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SOLARCELL_PANEL_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SOLARCELL_PANEL_INFO.java
new file mode 100644
index 0000000..6dd1ba0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SOLARCELL_PANEL_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SOLARCELL_SYSTEM_HISTORY_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SOLARCELL_SYSTEM_HISTORY_INFO.java
new file mode 100644
index 0000000..fb07850
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SOLARCELL_SYSTEM_HISTORY_INFO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/START_LISTEN_FINISH_RESULT_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/START_LISTEN_FINISH_RESULT_INFO.java
new file mode 100644
index 0000000..93708ae
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/START_LISTEN_FINISH_RESULT_INFO.java
@@ -0,0 +1,13 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/STEP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/STEP_INFO.java
new file mode 100644
index 0000000..be43ee8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/STEP_INFO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/STEP_SEQUENCE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/STEP_SEQUENCE_INFO.java
new file mode 100644
index 0000000..9d80d5a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/STEP_SEQUENCE_INFO.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/StringByteArr32.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/StringByteArr32.java
new file mode 100644
index 0000000..a460137
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/StringByteArr32.java
@@ -0,0 +1,15 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/StringByteArrSixteen.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/StringByteArrSixteen.java
new file mode 100644
index 0000000..1d0d2e4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/StringByteArrSixteen.java
@@ -0,0 +1,15 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SupportedModeByteArr.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SupportedModeByteArr.java
new file mode 100644
index 0000000..0de9c87
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/SupportedModeByteArr.java
@@ -0,0 +1,15 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/THERMOMETRY_SHIELD_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/THERMOMETRY_SHIELD_INFO.java
new file mode 100644
index 0000000..5ea98c1
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/THERMOMETRY_SHIELD_INFO.java
@@ -0,0 +1,39 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TIME_SECTION_6.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TIME_SECTION_6.java
new file mode 100644
index 0000000..ca9253f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TIME_SECTION_6.java
@@ -0,0 +1,11 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_EVENT.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_EVENT.java
new file mode 100644
index 0000000..0ab573e
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_EVENT.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_JUNTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_JUNTION_INFO.java
new file mode 100644
index 0000000..c6ff5fc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_JUNTION_INFO.java
@@ -0,0 +1,68 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_LANE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_LANE_INFO.java
new file mode 100644
index 0000000..ea9efce
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_LANE_INFO.java
@@ -0,0 +1,38 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_QUEUE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_QUEUE_INFO.java
new file mode 100644
index 0000000..e84efc6
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_QUEUE_INFO.java
@@ -0,0 +1,70 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_STAT_EX_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_STAT_EX_INFO.java
new file mode 100644
index 0000000..df8c082
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_STAT_EX_INFO.java
@@ -0,0 +1,64 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_VEHICLE_STOP_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_VEHICLE_STOP_INFO.java
new file mode 100644
index 0000000..242c2de
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_FLOW_VEHICLE_STOP_INFO.java
@@ -0,0 +1,63 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_INFO.java
new file mode 100644
index 0000000..49f4ed8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_INFO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_QUEUE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_QUEUE_INFO.java
new file mode 100644
index 0000000..ef34333
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_QUEUE_INFO.java
@@ -0,0 +1,59 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_STATE.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_STATE.java
new file mode 100644
index 0000000..93419cc
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/TRAFFIC_STATE.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/UNPACKING_CHECK_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/UNPACKING_CHECK_INFO.java
new file mode 100644
index 0000000..0e0f23a
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/UNPACKING_CHECK_INFO.java
@@ -0,0 +1,89 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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];
+    /**
+     * com.netsdk.lib.NetSDKLib.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/USER_TIME_SECTION.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/USER_TIME_SECTION.java
new file mode 100644
index 0000000..7e3d7b8
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/USER_TIME_SECTION.java
@@ -0,0 +1,13 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/VA_CAPS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/VA_CAPS_INFO.java
new file mode 100644
index 0000000..a52f5ae
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/VA_CAPS_INFO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/VA_DYNAMIC_CAPS_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/VA_DYNAMIC_CAPS_INFO.java
new file mode 100644
index 0000000..92eec56
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/VA_DYNAMIC_CAPS_INFO.java
@@ -0,0 +1,27 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/VA_OBJECT_ANIMAL.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/VA_OBJECT_ANIMAL.java
new file mode 100644
index 0000000..4a8507f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/VA_OBJECT_ANIMAL.java
@@ -0,0 +1,56 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/VaccinateDateByteArr.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/VaccinateDateByteArr.java
new file mode 100644
index 0000000..076cea0
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/VaccinateDateByteArr.java
@@ -0,0 +1,15 @@
+package com.ruoyi.device.dhsdk.lib.structure;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description  历史接种日期字符串对应字节数组
+ * @date 2021/08/15
+ */
+public class VaccinateDateByteArr extends NetSDKLib.SdkStructure{
+	/**
+	 *  历史接种日期字符串对应字节数组
+	 */
+	public byte[] vaccinateDateByteArr = new byte[32];
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/CANDIDATE_INFO_CEX.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/CANDIDATE_INFO_CEX.java
new file mode 100644
index 0000000..d032984
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/CANDIDATE_INFO_CEX.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.structure.customize;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.Utils;
+import com.ruoyi.device.dhsdk.lib.structure.NET_TIME;
+
+import java.nio.charset.Charset;
+import java.util.Arrays;
+
+/**
+ * @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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/DEV_EVENT_CROSSLINE_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/DEV_EVENT_CROSSLINE_INFO.java
new file mode 100644
index 0000000..9f0ac94
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/DEV_EVENT_CROSSLINE_INFO.java
@@ -0,0 +1,158 @@
+package com.netsdk.lib.structure.customize;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/DEV_EVENT_CROSSREGION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/DEV_EVENT_CROSSREGION_INFO.java
new file mode 100644
index 0000000..b5c596c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/DEV_EVENT_CROSSREGION_INFO.java
@@ -0,0 +1,209 @@
+package com.netsdk.lib.structure.customize;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_CAPTURE_PROCESS_END_TYPE;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_TRIGGER_TYPE;
+
+import static com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/DEV_EVENT_PARKINGDETECTION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/DEV_EVENT_PARKINGDETECTION_INFO.java
new file mode 100644
index 0000000..dc75b9d
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/DEV_EVENT_PARKINGDETECTION_INFO.java
@@ -0,0 +1,136 @@
+package com.ruoyi.device.dhsdk.lib.structure.customize;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+
+import static com.ruoyi.device.dhsdk.lib.NetSDKLib.MAX_PATH;
+import static com.ruoyi.device.dhsdk.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 NetSDKLib.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/EVENT_INTELLI_COMM_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/EVENT_INTELLI_COMM_INFO.java
new file mode 100644
index 0000000..e812c1c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/EVENT_INTELLI_COMM_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure.customize;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/MEDIAFILE_FACERECOGNITION_INFO.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/MEDIAFILE_FACERECOGNITION_INFO.java
new file mode 100644
index 0000000..4ad0950
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/customize/MEDIAFILE_FACERECOGNITION_INFO.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.structure.customize;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.Utils;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/ALARM_RTSC_RUNNING_INFO_V1.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/ALARM_RTSC_RUNNING_INFO_V1.java
new file mode 100644
index 0000000..1fc71de
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/ALARM_RTSC_RUNNING_INFO_V1.java
@@ -0,0 +1,80 @@
+package com.ruoyi.device.dhsdk.lib.structure.optimized;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/ENTER_INFO_V1.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/ENTER_INFO_V1.java
new file mode 100644
index 0000000..5588cf2
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/ENTER_INFO_V1.java
@@ -0,0 +1,33 @@
+package com.ruoyi.device.dhsdk.lib.structure.optimized;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/LAMP_GROUP_INFO_V1.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/LAMP_GROUP_INFO_V1.java
new file mode 100644
index 0000000..3629838
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/LAMP_GROUP_INFO_V1.java
@@ -0,0 +1,36 @@
+package com.ruoyi.device.dhsdk.lib.structure.optimized;
+
+import com.ruoyi.device.dhsdk.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.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/LAMP_STATE_V1.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/LAMP_STATE_V1.java
new file mode 100644
index 0000000..4e60c98
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/LAMP_STATE_V1.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.dhsdk.lib.structure.optimized;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/NET_IN_WM_GET_COLLECTIONS_V1.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/NET_IN_WM_GET_COLLECTIONS_V1.java
new file mode 100644
index 0000000..af250c4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/NET_IN_WM_GET_COLLECTIONS_V1.java
@@ -0,0 +1,17 @@
+package com.ruoyi.device.dhsdk.lib.structure.optimized;
+
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/NET_OUT_WM_GET_COLLECTIONS_V1.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/NET_OUT_WM_GET_COLLECTIONS_V1.java
new file mode 100644
index 0000000..911bc76
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/structure/optimized/NET_OUT_WM_GET_COLLECTIONS_V1.java
@@ -0,0 +1,28 @@
+package com.ruoyi.device.dhsdk.lib.structure.optimized;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.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/ard-work/src/main/java/com/ruoyi/device/dhsdk/module/ConfigModule.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/module/ConfigModule.java
index 7678235..a435d75 100644
--- a/ard-work/src/main/java/com/ruoyi/device/dhsdk/module/ConfigModule.java
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/module/ConfigModule.java
@@ -1,36 +1,28 @@
-package com.ruoyi.device.dhsdk.module;
-
-import com.ruoyi.device.dhsdk.lib.NetSDKLib;
-import com.sun.jna.Structure;
-import com.sun.jna.ptr.IntByReference;
-
-/**
- * @Description:
- * @ClassName: ConfigModule
- * @Author: 刘苏义
- * @Date: 2023年10月14日14:57:01
- **/
-public class ConfigModule {
-    public static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE;
-
-    public static boolean GetDevConfig(NetSDKLib.LLong hLoginHandle, int nType, Structure cmdObject) {
-        boolean result = false;
-        IntByReference error = new IntByReference(0);
-        int nBufferLen = 2 * 1024 * 1024;
-        netsdk.CLIENT_QueryDevState(hLoginHandle, nType, cmdObject.getPointer(), nBufferLen, error, 3000);
-        return result;
-    }
-    /**
-     * 查询设备状态
-     */
-    public static boolean queryDevState(NetSDKLib.LLong hLoginHandle, int nType, NetSDKLib.SdkStructure stuInfo) {
-
-        IntByReference intRetLen = new IntByReference();
-        stuInfo.write();
-        if (!LoginModule.netsdk.CLIENT_QueryDevState(hLoginHandle, nType, stuInfo.getPointer(), stuInfo.size(), intRetLen, 3000)) {
-            return false;
-        }
-        stuInfo.read();
-        return true;
-    }
-}
+package com.ruoyi.device.dhsdk.module;
+
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.sun.jna.Structure;
+import com.sun.jna.ptr.IntByReference;
+
+/**
+ * @Description:
+ * @ClassName: ConfigModule
+ * @Author: 刘苏义
+ * @Date: 2023年10月14日14:57:01
+ **/
+public class ConfigModule {
+    public static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE;
+    /**
+     * 查询设备状态
+     */
+    public static boolean queryDevState(NetSDKLib.LLong hLoginHandle, int nType, NetSDKLib.SdkStructure stuInfo) {
+
+        IntByReference intRetLen = new IntByReference();
+        stuInfo.write();
+        if (!LoginModule.netsdk.CLIENT_QueryDevState(hLoginHandle, nType, stuInfo.getPointer(), stuInfo.size(), intRetLen, 3000)) {
+            return false;
+        }
+        stuInfo.read();
+        return true;
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/IDhClientService.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/IDhClientService.java
index d64f623..7a1a435 100644
--- a/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/IDhClientService.java
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/IDhClientService.java
@@ -1,35 +1,45 @@
-package com.ruoyi.device.dhsdk.service;
-
-import com.ruoyi.device.camera.domain.ArdCameras;
-import com.ruoyi.device.camera.domain.CameraCmd;
-import com.ruoyi.device.channel.domain.ArdChannel;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName IDhSdkServer
- * @Description:
- * @Author 刘苏义
- * @Date 2023/10/13 21:18
- * @Version 1.0
- */
-public interface IDhClientService {
-
-    //sdk初始化
-    Boolean init();
-    //登录
-    Boolean login(ArdCameras ardCamera);
-    //登录所有相机
-    void loginAll();
-    //注销
-    Boolean logout(String cameraId);
-
-    //在线状态
-    boolean isOnLine(CameraCmd cmd);
-
-    //云台控制
-    boolean pTZControl(CameraCmd cmd);
-    //ptz 三坐标
-    Map<String, Object> getPtz(CameraCmd cmd);
-}
+package com.ruoyi.device.dhsdk.service;
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.device.camera.domain.ArdCameras;
+import com.ruoyi.device.camera.domain.CameraCmd;
+import com.ruoyi.device.channel.domain.ArdChannel;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName IDhSdkServer
+ * @Description:
+ * @Author 刘苏义
+ * @Date 2023/10/13 21:18
+ * @Version 1.0
+ */
+public interface IDhClientService {
+
+    //sdk初始化
+    Boolean init();
+
+    //登录
+    Boolean login(ArdCameras ardCamera);
+
+    //登录所有相机
+    void loginAll();
+
+    //注销
+    Boolean logout(String cameraId);
+
+    //在线状态
+    boolean isOnLine(CameraCmd cmd);
+
+    //云台控制
+    boolean pTZControl(CameraCmd cmd);
+
+    //ptz 三坐标
+    Map<String, Object> getPtz(CameraCmd cmd);
+
+    //设置PTZ
+    boolean setPtz(CameraCmd cmd);
+    //设置零方位角
+    boolean setZeroPtz(CameraCmd cmd);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java
index d2e4ae3..b984262 100644
--- a/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java
@@ -1,255 +1,317 @@
-package com.ruoyi.device.dhsdk.service.impl;
-
-import com.ruoyi.common.utils.uuid.IdUtils;
-import com.ruoyi.device.camera.domain.ArdCameras;
-import com.ruoyi.device.camera.domain.CameraCmd;
-import com.ruoyi.device.camera.service.IArdCamerasService;
-import com.ruoyi.device.channel.domain.ArdChannel;
-import com.ruoyi.device.channel.service.IArdChannelService;
-import com.ruoyi.device.dhsdk.common.Res;
-import com.ruoyi.device.dhsdk.lib.NetSDKLib;
-import com.ruoyi.device.dhsdk.lib.NetSDKLib.LLong;
-import com.ruoyi.device.dhsdk.lib.ToolKits;
-import com.ruoyi.device.dhsdk.lib.enumeration.EM_NEW_QUERY_SYSTEM_INFO;
-import com.ruoyi.device.dhsdk.module.ConfigModule;
-import com.ruoyi.device.dhsdk.module.LoginModule;
-import com.ruoyi.device.dhsdk.module.PtzControlModule;
-import com.ruoyi.device.dhsdk.service.IDhClientService;
-import com.ruoyi.device.hiksdk.common.GlobalVariable;
-import com.ruoyi.device.hiksdk.sdk.HCNetSDK;
-import com.sun.jna.Pointer;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.text.DecimalFormat;
-import java.util.*;
-
-import static com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_DEVSTATE_PTZ_LOCATION;
-import static com.ruoyi.device.dhsdk.lib.ToolKits.getErrorCodePrint;
-import static com.ruoyi.device.hiksdk.sdk.HCNetSDK.NET_DVR_CHECK_USER_STATUS;
-
-/**
- * @ClassName DhSdkServiceImpl
- * @Description:
- * @Author 刘苏义
- * @Date 2023/10/13 21:19
- * @Version 1.0
- */
-@Service
-@Slf4j(topic = "dhSdk")
-public class DhClientServiceImpl implements IDhClientService {
-    @Resource
-    private IArdCamerasService ardCamerasService;
-    @Resource
-    private IArdChannelService ardChannelService;
-
-    private Vector<String> chnlist = new Vector<String>();
-    // 设备断线通知回调
-    private static DisConnect disConnect = new DisConnect();
-    // 网络连接恢复
-    private static HaveReConnect haveReConnect = new HaveReConnect();
-
-
-    @Override
-    public void loginAll() {
-        try {
-            ArdCameras ardCamera = new ArdCameras();
-            ardCamera.setFactory("2");//获取大华相机
-            List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(ardCamera);
-            for (ArdCameras camera : ardCameras) {
-                Thread.sleep(500);
-                //异步登录
-                login(camera);
-            }
-        } catch (Exception ex) {
-            log.error("初始化登录相机异常:" + ex.getMessage());
-        }
-    }
-
-    @Override
-    public Boolean init() {
-        return LoginModule.init(disConnect, haveReConnect);   // 打开工程,初始化
-    }
-
-    @Override
-    @Async
-    public Boolean login(ArdCameras camera) {
-        LLong loginId = LoginModule.login(camera.getIp(), camera.getPort(), camera.getUsername(), camera.getPassword());
-        if (loginId.longValue() > 0) {
-            //log.debug(camera.getIp() + ":" + camera.getPort() + "登录成功");
-            if (GlobalVariable.loginMap.containsKey(camera.getId())) {
-                GlobalVariable.loginMap.remove(camera.getId());
-            }
-            //删除管理通道
-            ardChannelService.deleteArdChannelByDeviceId(camera.getId());
-            camera.setState("1");
-            camera.setChanNum(LoginModule.m_stDeviceInfo.byChanNum);
-            camera.setStartDChan(1);
-            camera.setLoginId((int) loginId.longValue());
-            ardCamerasService.updateArdCameras(camera);
-            GlobalVariable.loginMap.put(camera.getId(), loginId);
-            //获取最新通道
-            for (int i = 1; i < LoginModule.m_stDeviceInfo.byChanNum + 1; i++) {
-                chnlist.add(Res.string().getChannel() + " " + String.valueOf(i));
-                ArdChannel channel = new ArdChannel();
-                channel.setDeviceId(camera.getId());
-                channel.setName("通道" + i);
-                channel.setId(IdUtils.simpleUUID());
-                channel.setChanNo(i);
-                ardChannelService.insertArdChannel(channel);
-            }
-        } else {
-            //log.debug(camera.getIp() + ":" + camera.getPort() + "登录失败");
-            camera.setChanNum(0);
-            camera.setLoginId(-1);
-            camera.setState("0");
-            ardCamerasService.updateArdCameras(camera);
-            return false;
-        }
-
-        return true;
-    }
-
-    @Override
-    public Boolean logout(String cameraId) {
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return false;
-        }
-        LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId);
-        return LoginModule.logout(loginId);
-    }
-
-    @Override
-    public boolean isOnLine(CameraCmd cmd) {
-        try {
-            String cameraId = cmd.getCameraId();
-            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-                return false;
-            }
-            LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId);
-
-
-        } catch (Exception ex) {
-            log.error("检测在线异常:" + ex.getMessage());
-            return false;
-        }
-
-        return false;
-    }
-
-    @Override
-    public boolean pTZControl(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        boolean enable = cmd.isEnable();
-        Integer chanNo = cmd.getChanNo();
-        Integer speed = cmd.getSpeed();
-        Integer code = cmd.getCode();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return false;
-        }
-        LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId);
-        int dwStop;
-        if (enable) {
-            dwStop = 0;//开启
-        } else {
-            dwStop = 1;//关闭
-        }
-        int dwPTZCommand = -1;
-        switch (code) {
-            /*方向*/
-            case 1:
-                dwPTZCommand = NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTTOP;
-                break;
-            case 2:
-                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL;
-                break;
-            case 3:
-                dwPTZCommand = NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTTOP;
-                break;
-            case 4:
-                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_LEFT_CONTROL;
-                break;
-            case 5:
-                dwPTZCommand = HCNetSDK.RUN_SEQ;
-                break;
-            case 6:
-                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_RIGHT_CONTROL;
-                break;
-            case 7:
-                dwPTZCommand = NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTDOWN;
-                break;
-            case 8:
-                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_DOWN_CONTROL;
-                break;
-            case 9:
-                dwPTZCommand = NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTDOWN;
-                break;
-            /*焦距*/
-            case 10:
-                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_ADD_CONTROL;
-                break;
-            case 11:
-                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_DEC_CONTROL;
-                break;
-            /*焦点*/
-            case 12:
-                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_ADD_CONTROL;
-                break;
-            case 13:
-                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_DEC_CONTROL;
-                break;
-            /*光圈*/
-            case 14:
-                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_ADD_CONTROL;
-                break;
-            case 15:
-                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_DEC_CONTROL;
-                break;
-        }
-        boolean bool = LoginModule.netsdk.CLIENT_DHPTZControlEx(loginId, chanNo - 1, dwPTZCommand, speed, speed, 0, dwStop);
-        if (!bool) {
-            log.error("控制失败,请稍后重试" + getErrorCodePrint());
-        }
-        return bool;
-    }
-
-    @Override
-    public Map<String, Object> getPtz(CameraCmd cmd) {
-        Map<String, Object> ptzMap = new HashMap<>();
-        String cameraId = cmd.getCameraId();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return null;
-        }
-        LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId);
-        NetSDKLib.NET_PTZ_LOCATION_INFO dh_ptz_location_info = new NetSDKLib.NET_PTZ_LOCATION_INFO();
-        boolean b = ConfigModule.queryDevState(loginId, NET_DEVSTATE_PTZ_LOCATION, dh_ptz_location_info);
-        if (b) {
-            DecimalFormat df = new DecimalFormat("0.0");//设置保留位数
-            String nPTZPan = df.format((float)dh_ptz_location_info.nPTZPan / 10);
-            String nPTZTilt = df.format((float)dh_ptz_location_info.nPTZTilt/10);
-            String nPTZZoom = df.format((float)dh_ptz_location_info.nPTZZoom);
-            ptzMap.put("p", nPTZPan);
-            ptzMap.put("t", nPTZTilt);
-            ptzMap.put("z", nPTZZoom);
-        }
-        return ptzMap;
-    }
-
-    // 设备断线回调: 通过 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);
-        }
-    }
-
-    // 网络连接恢复,设备重连成功回调
-    // 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数
-    private static class HaveReConnect implements NetSDKLib.fHaveReConnect {
-        @Override
-        public void invoke(LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser) {
-            System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
-        }
-    }
+package com.ruoyi.device.dhsdk.service.impl;
+
+import com.ruoyi.common.annotation.SdkOperate;
+import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.device.camera.domain.ArdCameras;
+import com.ruoyi.device.camera.domain.CameraCmd;
+import com.ruoyi.device.camera.service.IArdCamerasService;
+import com.ruoyi.device.channel.domain.ArdChannel;
+import com.ruoyi.device.channel.service.IArdChannelService;
+import com.ruoyi.device.dhsdk.common.Res;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib;
+import com.ruoyi.device.dhsdk.lib.NetSDKLib.LLong;
+import com.ruoyi.device.dhsdk.lib.ToolKits;
+import com.ruoyi.device.dhsdk.lib.enumeration.EM_NEW_QUERY_SYSTEM_INFO;
+import com.ruoyi.device.dhsdk.module.ConfigModule;
+import com.ruoyi.device.dhsdk.module.LoginModule;
+import com.ruoyi.device.dhsdk.module.PtzControlModule;
+import com.ruoyi.device.dhsdk.service.IDhClientService;
+import com.ruoyi.device.hiksdk.common.GlobalVariable;
+import com.ruoyi.device.hiksdk.sdk.HCNetSDK;
+import com.sun.jna.Pointer;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.text.DecimalFormat;
+import java.util.*;
+
+import static com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_DEVSTATE_ONLINE;
+import static com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_DEVSTATE_PTZ_LOCATION;
+import static com.ruoyi.device.dhsdk.lib.ToolKits.getErrorCodePrint;
+import static com.ruoyi.device.hiksdk.sdk.HCNetSDK.*;
+
+/**
+ * @ClassName DhSdkServiceImpl
+ * @Description:
+ * @Author 刘苏义
+ * @Date 2023/10/13 21:19
+ * @Version 1.0
+ */
+@Service
+@Slf4j(topic = "dhSdk")
+public class DhClientServiceImpl implements IDhClientService {
+    @Resource
+    private IArdCamerasService ardCamerasService;
+    @Resource
+    private IArdChannelService ardChannelService;
+
+    private Vector<String> chnlist = new Vector<String>();
+    // 设备断线通知回调
+    private static DisConnect disConnect = new DisConnect();
+    // 网络连接恢复
+    private static HaveReConnect haveReConnect = new HaveReConnect();
+
+
+    @Override
+    public void loginAll() {
+        try {
+            ArdCameras ardCamera = new ArdCameras();
+            ardCamera.setFactory("2");//获取大华相机
+            List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(ardCamera);
+            for (ArdCameras camera : ardCameras) {
+                Thread.sleep(500);
+                //异步登录
+                login(camera);
+            }
+        } catch (Exception ex) {
+            log.error("初始化登录相机异常:" + ex.getMessage());
+        }
+    }
+
+    @Override
+    public Boolean init() {
+        return LoginModule.init(disConnect, haveReConnect);   // 打开工程,初始化
+    }
+
+    @Override
+    @Async
+    public Boolean login(ArdCameras camera) {
+        LLong loginId = LoginModule.login(camera.getIp(), camera.getPort(), camera.getUsername(), camera.getPassword());
+        if (loginId.longValue() > 0) {
+            //log.debug(camera.getIp() + ":" + camera.getPort() + "登录成功");
+            if (GlobalVariable.loginMap.containsKey(camera.getId())) {
+                GlobalVariable.loginMap.remove(camera.getId());
+            }
+            //删除管理通道
+            ardChannelService.deleteArdChannelByDeviceId(camera.getId());
+            camera.setState("1");
+            camera.setChanNum(LoginModule.m_stDeviceInfo.byChanNum);
+            camera.setStartDChan(1);
+            camera.setLoginId((int) loginId.longValue());
+            ardCamerasService.updateArdCameras(camera);
+            GlobalVariable.loginMap.put(camera.getId(), loginId);
+            //获取最新通道
+            for (int i = 1; i < LoginModule.m_stDeviceInfo.byChanNum + 1; i++) {
+                chnlist.add(Res.string().getChannel() + " " + String.valueOf(i));
+                ArdChannel channel = new ArdChannel();
+                channel.setDeviceId(camera.getId());
+                channel.setName("通道" + i);
+                channel.setId(IdUtils.simpleUUID());
+                channel.setChanNo(i);
+                ardChannelService.insertArdChannel(channel);
+            }
+        } else {
+            //log.debug(camera.getIp() + ":" + camera.getPort() + "登录失败");
+            camera.setChanNum(0);
+            camera.setLoginId(-1);
+            camera.setState("0");
+            ardCamerasService.updateArdCameras(camera);
+            return false;
+        }
+
+        return true;
+    }
+
+    @Override
+    public Boolean logout(String cameraId) {
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return false;
+        }
+        LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId);
+        return LoginModule.logout(loginId);
+    }
+
+    @Override
+    public boolean isOnLine(CameraCmd cmd) {
+        try {
+            String cameraId = cmd.getCameraId();
+            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+                return false;
+            }
+            LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId);
+            NetSDKLib.NET_WORKSTATE dh_ptz_location_info = new NetSDKLib.NET_WORKSTATE();
+            boolean b = ConfigModule.queryDevState(loginId, NET_DEVSTATE_ONLINE, dh_ptz_location_info);
+            if (!b) {
+                return false;
+            }
+        } catch (Exception ex) {
+            log.error("检测在线异常:" + ex.getMessage());
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public boolean pTZControl(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        boolean enable = cmd.isEnable();
+        Integer chanNo = cmd.getChanNo();
+        Integer speed = cmd.getSpeed();
+        Integer code = cmd.getCode();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return false;
+        }
+        LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId);
+        int dwStop;
+        if (enable) {
+            dwStop = 0;//开启
+        } else {
+            dwStop = 1;//关闭
+        }
+        int dwPTZCommand = -1;
+        switch (code) {
+            /*方向*/
+            case 1:
+                dwPTZCommand = NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTTOP;
+                break;
+            case 2:
+                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL;
+                break;
+            case 3:
+                dwPTZCommand = NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTTOP;
+                break;
+            case 4:
+                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_LEFT_CONTROL;
+                break;
+            case 5:
+                dwPTZCommand = HCNetSDK.RUN_SEQ;
+                break;
+            case 6:
+                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_RIGHT_CONTROL;
+                break;
+            case 7:
+                dwPTZCommand = NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTDOWN;
+                break;
+            case 8:
+                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_DOWN_CONTROL;
+                break;
+            case 9:
+                dwPTZCommand = NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTDOWN;
+                break;
+            /*焦距*/
+            case 10:
+                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_ADD_CONTROL;
+                break;
+            case 11:
+                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_DEC_CONTROL;
+                break;
+            /*焦点*/
+            case 12:
+                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_ADD_CONTROL;
+                break;
+            case 13:
+                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_DEC_CONTROL;
+                break;
+            /*光圈*/
+            case 14:
+                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_ADD_CONTROL;
+                break;
+            case 15:
+                dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_DEC_CONTROL;
+                break;
+        }
+        boolean bool = LoginModule.netsdk.CLIENT_DHPTZControlEx(loginId, chanNo - 1, dwPTZCommand, speed, speed, 0, dwStop);
+        if (!bool) {
+            log.error("控制失败,请稍后重试" + getErrorCodePrint());
+        }
+        return bool;
+    }
+
+    @Override
+    public Map<String, Object> getPtz(CameraCmd cmd) {
+        Map<String, Object> ptzMap = new HashMap<>();
+        String cameraId = cmd.getCameraId();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return null;
+        }
+        LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId);
+        NetSDKLib.NET_PTZ_LOCATION_INFO dh_ptz_location_info = new NetSDKLib.NET_PTZ_LOCATION_INFO();
+        boolean b = ConfigModule.queryDevState(loginId, NET_DEVSTATE_PTZ_LOCATION, dh_ptz_location_info);
+        if (b) {
+            DecimalFormat df = new DecimalFormat("0.0");//设置保留位数
+            String nPTZPan = df.format((float) dh_ptz_location_info.nPTZPan / 10);
+            String nPTZTilt = df.format((float) dh_ptz_location_info.nPTZTilt / 10);
+            String nPTZZoom = df.format((float) dh_ptz_location_info.nPTZZoom);
+            ptzMap.put("p", nPTZPan);
+            ptzMap.put("t", nPTZTilt);
+            ptzMap.put("z", nPTZZoom);
+        }
+        return ptzMap;
+    }
+    /**
+     * @描述 设置ptz信息
+     * @参数 [userId, channelNum]
+     * @返回值 boolean
+     * @创建人 刘苏义
+     * @创建时间 2023/1/17 16:36
+     * @修改人和其它信息 注意俯仰角度负值需要加上360得到的正值进行设置
+     */
+    @Override
+    @SdkOperate
+    public boolean setPtz(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer chanNo = cmd.getChanNo();
+        Map<String, Double> ptz = cmd.getPtzMap();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return false;
+        }
+        LLong loginId = (LLong)GlobalVariable.loginMap.get(cameraId);
+        try {
+            int p = (int)(ptz.get("p") * 10);
+            int t = (int)(ptz.get("t") * 10);
+            int z = ptz.get("z").intValue();
+            boolean bool = LoginModule.netsdk.CLIENT_DHPTZControlEx(loginId, chanNo - 1, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_EXACTGOTO, p, t, z, 0 );
+            if (!bool) {
+                log.error("控制失败,请稍后重试" + getErrorCodePrint());
+            }
+            return bool;
+        } catch (Exception ex) {
+            log.error(ex.getMessage());
+            return false;
+        }
+    }
+
+    /**
+     * @描述 设置零方位角
+     * @参数 [userId, channelNum]
+     * @返回值 boolean
+     * @创建人 刘苏义
+     * @创建时间 2023/1/17 16:36
+     * @修改人和其它信息 注意俯仰角度负值需要加上360得到的正值进行设置
+     */
+    @Override
+    @SdkOperate
+    public boolean setZeroPtz(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer chanNo = cmd.getChanNo();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return false;
+        }
+        LLong loginId = (LLong)GlobalVariable.loginMap.get(cameraId);
+        boolean bool = NetSDKLib.NETSDK_INSTANCE.CLIENT_DHPTZControlEx(loginId, chanNo - 1, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RESETZERO, 0, 0, 0, 0);
+        if (!bool) {
+            log.error("控制失败,请稍后重试" + getErrorCodePrint());
+        }
+        return bool;
+    }
+
+
+
+    // 设备断线回调: 通过 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);
+        }
+    }
+
+    // 网络连接恢复,设备重连成功回调
+    // 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数
+    private static class HaveReConnect implements NetSDKLib.fHaveReConnect {
+        @Override
+        public void invoke(LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+            System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
+        }
+    }
 }
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java
index 604ef13..ea46ace 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java
@@ -1,338 +1,338 @@
-package com.ruoyi.device.hiksdk.controller;
-
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.device.camera.domain.ArdCameras;
-import com.ruoyi.device.camera.domain.CameraCmd;
-import com.ruoyi.device.camera.service.IArdCamerasService;
-import com.ruoyi.device.dhsdk.service.IDhClientService;
-import com.ruoyi.device.hiksdk.service.IHikClientService;
-import com.ruoyi.common.annotation.Anonymous;
-import com.ruoyi.common.core.domain.AjaxResult;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.Resource;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @ClassName: sdkController
- * @Description:
- * @Author: Administrator
- * @Date: 2023年01月17日 12:04
- * @Version: 1.0
- **/
-@Api(tags = "海康SDK接口")
-@Controller
-@RequestMapping("/hik")
-@Anonymous
-public class SdkController extends BaseController {
-
-    @Resource
-    private IHikClientService sdk;
-    @Resource
-    private IDhClientService ClientService;
-    @Resource
-    private IArdCamerasService ardCamerasService;
-
-    /**
-     * @描述 初始加载海康库文件
-     * @参数 []
-     * @返回值 void
-     * @创建人 刘苏义
-     * @创建时间 2023/1/17 16:13
-     * @修改人和其它信息 if (Platform.isLinux())
-     */
-    @PostConstruct
-    public void initHCNetSDK() {
-        //初始化加载sdk库文件
-        sdk.loadHCNetSDKLib();
-        //登录所有相机
-        sdk.loginAll();
-    }
-
-    @RequestMapping("/preview")
-    private String preview() {
-        return "preview";
-    }
-    @RequestMapping("/index")
-    private String index() {
-        return "test";
-    }
-
-    @GetMapping("/list")
-    public @ResponseBody
-    AjaxResult list(ArdCameras ardCamera) {
-        List<ArdCameras> list = ardCamerasService.selectArdCamerasListNoDataScope(ardCamera);
-        return AjaxResult.success("相机列表:", list);
-    }
-
-    @ApiOperation("获取码流压缩参数")
-    @PostMapping("/getVideoCompressionCfg")
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
-    @Log(title = "获取码流压缩参数", businessType = BusinessType.CONTROL)
-    public @ResponseBody
-    AjaxResult getVideoCompressionCfg(@RequestBody CameraCmd cmd) {
-        return AjaxResult.success(sdk.getVideoCompressionCfg(cmd));
-    }
-
-    @ApiOperation("在线状态")
-    @PostMapping("/state")
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId"})
-    @Log(title = "在线状态", businessType = BusinessType.CONTROL)
-    public @ResponseBody
-    AjaxResult getOnlineState(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        boolean onLine = sdk.isOnLine(cmd);
-        return AjaxResult.success(onLine);
-    }
-
-    @ApiOperation(value = "云台控制", notes = "Code:1-左上 2-上 3-右上 4-左 5-巡航 6-右 7-左下 8-下 9-右下 10-焦距变大 11-焦距变小\n" +
-            "12-焦点前调 13-焦点后调 14-光圈扩大 15-光圈缩小 16-雨刷开启")
-    @PostMapping("/PTZControlWithSpeed")
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.speed", "cmd.enable", "cmd.code"})
-    @Log(title = "云台控制", businessType = BusinessType.CONTROL)
-    public @ResponseBody
-    AjaxResult PTZControlWithSpeed(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(sdk.pTZControlWithSpeed(cmd));
-    }
-
-    @ApiOperation("调用预置点")
-    @PostMapping("/gotoPreset")
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.presetIndex"})
-    @Log(title = "调用预置点", businessType = BusinessType.CONTROL)
-    public @ResponseBody
-    AjaxResult gotoPreset(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(sdk.gotoPreset(cmd));
-    }
-
-    @ApiOperation("设置预置点")
-    @PostMapping("/setPreset")
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.presetIndex"})
-    @Log(title = "设置预置点", businessType = BusinessType.CONTROL)
-    public @ResponseBody
-    AjaxResult setPreset(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(sdk.setPreset(cmd));
-    }
-
-    @ApiOperation("获取聚焦值")
-    @PostMapping("/getFocusPos")
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
-    @Log(title = "获取聚焦值", businessType = BusinessType.CONTROL)
-    public @ResponseBody
-    AjaxResult getFocusPos(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        Map<String, Object> Map = sdk.getFocusPos(cmd);
-        return AjaxResult.success("获取聚焦值", Map);
-    }
-
-    @ApiOperation("设置聚焦值")
-    @PostMapping("/setFocusPos")
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.dwFocusPos"})
-    @Log(title = "设置聚焦值", businessType = BusinessType.CONTROL)
-    public @ResponseBody
-    AjaxResult setFocusPos(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(sdk.setFocusPos(cmd));
-    }
-
-    @ApiOperation("获取PTZ")
-    @PostMapping("/getPTZ")
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
-    @Log(title = "获取PTZ", businessType = BusinessType.CONTROL)
-    public @ResponseBody
-    AjaxResult getPTZ(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        Map<String, Object> ptzMap = sdk.getPtz(cmd);
-        return AjaxResult.success("获取ptz", ptzMap);
-    }
-
-    @ApiOperation("获取PTZ范围")
-    @PostMapping("/getPTZScope")
-    @Log(title = "获取PTZ范围", businessType = BusinessType.CONTROL)
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
-    public @ResponseBody
-    AjaxResult getPTZScope(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        Map<String, Object> ptzMap = sdk.getPtzScope(cmd);
-        return AjaxResult.success("获取ptz范围", ptzMap);
-    }
-
-    @ApiOperation("设置PTZ")
-    @PostMapping("/setPTZ")
-    @Log(title = "设置PTZ", businessType = BusinessType.CONTROL)
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.ptzMap"})
-    public @ResponseBody
-    AjaxResult setPTZ(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(sdk.setPtz(cmd));
-    }
-
-    @ApiOperation("指向目标")
-    @PostMapping("/setTargetPosition")
-    @Log(title = "指向目标", businessType = BusinessType.CONTROL)
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.targetPosition"})
-    public @ResponseBody
-    AjaxResult setTargetPosition(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(sdk.guideTargetPosition(cmd));
-    }
-
-
-    @ApiOperation("设置零方位角")
-    @PostMapping("/setZeroPTZ")
-    @Log(title = "设置零方位角", businessType = BusinessType.CONTROL)
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.cmd.chanNo"})
-    public @ResponseBody
-    AjaxResult setZeroPTZ(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(sdk.setZeroPtz(cmd));
-    }
-
-    @ApiOperation("设置锁定")
-    @PostMapping("/setPTZLock")
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.expired"})
-    @Log(title = "设置锁定", businessType = BusinessType.CONTROL)
-    public @ResponseBody
-    AjaxResult setPTZLock(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        return AjaxResult.success(sdk.controlLock(cmd));
-    }
-
-    @ApiOperation("设置解锁")
-    @PostMapping("/setPTZUnLock")
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId"})
-    @Log(title = "设置解锁", businessType = BusinessType.CONTROL)
-    public @ResponseBody
-    AjaxResult setPTZUnLock(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        return AjaxResult.success(sdk.controlUnLock(cmd));
-    }
-
-    @ApiOperation("获取云台锁定信息")
-    @PostMapping("/getPTZLockInfo")
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
-    @Log(title = "获取云台锁定信息", businessType = BusinessType.CONTROL)
-    public @ResponseBody
-    AjaxResult getPTZLockInfo(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        int byWorkMode = sdk.getPTZLockInfo(cmd);
-        if (byWorkMode == 0) {
-            return AjaxResult.success("云台锁定状态:解锁");
-        } else if (byWorkMode == 1) {
-            return AjaxResult.success("云台锁定状态:锁定");
-        } else {
-            return AjaxResult.error("云台锁定状态:失败");
-        }
-    }
-
-    @ApiOperation("透雾开关")
-    @PostMapping("/defogcfg")
-    @Log(title = "透雾开关", businessType = BusinessType.CONTROL)
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"})
-    public @ResponseBody
-    AjaxResult defogcfg(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(sdk.controlDefogcfg(cmd));
-    }
-
-    @ApiOperation("红外开关")
-    @PostMapping("/infrarecfg")
-    @Log(title = "红外开关", businessType = BusinessType.CONTROL)
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"})
-    public @ResponseBody
-    AjaxResult infrarecfg(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(sdk.controlInfrarecfg(cmd));
-    }
-
-    @ApiOperation(value = "手动/自动聚焦", notes = "true手动flase自动")
-    @PostMapping("/focusMode")
-    @Log(title = "手动/自动聚焦", businessType = BusinessType.CONTROL)
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"})
-    public @ResponseBody
-    AjaxResult enableFocusMode(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(sdk.controlFocusMode(cmd));
-    }
-
-    @ApiOperation(value = "获取聚焦模式", notes = "1手动2自动")
-    @PostMapping("/getFocusMode")
-    public @ResponseBody
-    AjaxResult getFocusMode(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        String focusMode = sdk.getFocusMode(cmd);
-        return AjaxResult.success(focusMode);
-    }
-
-    @ApiOperation("云台加热")
-    @PostMapping("/heateRpwron")
-    @Log(title = "云台加热", businessType = BusinessType.CONTROL)
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"})
-    public @ResponseBody
-    AjaxResult heateRpwron(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(sdk.controlPTHeateRpwron(cmd));
-    }
-
-
-    @ApiOperation("镜头加热")
-    @PostMapping("/cameraDeicing")
-    @Log(title = "镜头加热", businessType = BusinessType.CONTROL)
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"})
-    public @ResponseBody
-    AjaxResult cameraDeicing(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        return toAjax(sdk.controlCameraDeicing(cmd));
-    }
-
-    @PostMapping("/captureJPEGPicture")
-    public @ResponseBody
-    AjaxResult captureJPEGPicture(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        String base64Str = sdk.captureJPEGPicture(cmd);
-        return toAjaxString(base64Str, "相机抓图");
-    }
-
-    @ApiOperation("相机抓图")
-    @PostMapping("/picCutCate")
-    @Log(title = "相机抓图", businessType = BusinessType.CONTROL)
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
-    public @ResponseBody
-    AjaxResult picCutCate(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        String path = sdk.picCutCate(cmd);
-        return toAjaxString(path, "相机抓图");
-    }
-
-    @ApiOperation("手动录像")
-    @PostMapping("/record")
-    @Log(title = "手动录像", businessType = BusinessType.CONTROL)
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"})
-    public @ResponseBody
-    AjaxResult record(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        String path = sdk.record(cmd);
-        return toAjaxString(path, "手动录像");
-    }
-
-    @ApiOperation("获取相机架设参数")
-    @PostMapping("/getCameraSetupCFG")
-    @Log(title = "获取相机架设参数", businessType = BusinessType.CONTROL)
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"})
-    public @ResponseBody
-    AjaxResult getCameraSetupCFG(@RequestBody CameraCmd cmd) {
-        cmd.setOperator(SecurityUtils.getUserId());
-        return AjaxResult.success(sdk.getGisInfo(cmd));
-    }
-}
+package com.ruoyi.device.hiksdk.controller;
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.device.camera.domain.ArdCameras;
+import com.ruoyi.device.camera.domain.CameraCmd;
+import com.ruoyi.device.camera.service.IArdCamerasService;
+import com.ruoyi.device.dhsdk.service.IDhClientService;
+import com.ruoyi.device.hiksdk.service.IHikClientService;
+import com.ruoyi.common.annotation.Anonymous;
+import com.ruoyi.common.core.domain.AjaxResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName: sdkController
+ * @Description:
+ * @Author: Administrator
+ * @Date: 2023年01月17日 12:04
+ * @Version: 1.0
+ **/
+@Api(tags = "海康SDK接口")
+@Controller
+@RequestMapping("/hik")
+@Anonymous
+public class SdkController extends BaseController {
+
+    @Resource
+    private IHikClientService sdk;
+    @Resource
+    private IDhClientService ClientService;
+    @Resource
+    private IArdCamerasService ardCamerasService;
+
+    /**
+     * @描述 初始加载海康库文件
+     * @参数 []
+     * @返回值 void
+     * @创建人 刘苏义
+     * @创建时间 2023/1/17 16:13
+     * @修改人和其它信息 if (Platform.isLinux())
+     */
+    @PostConstruct
+    public void initHCNetSDK() {
+        //初始化加载sdk库文件
+        sdk.loadHCNetSDKLib();
+        //登录所有相机
+        sdk.loginAll();
+    }
+
+    @RequestMapping("/preview")
+    private String preview() {
+        return "preview";
+    }
+    @RequestMapping("/index")
+    private String index() {
+        return "test";
+    }
+
+    @GetMapping("/list")
+    public @ResponseBody
+    AjaxResult list(ArdCameras ardCamera) {
+        List<ArdCameras> list = ardCamerasService.selectArdCamerasListNoDataScope(ardCamera);
+        return AjaxResult.success("相机列表:", list);
+    }
+
+    @ApiOperation("获取码流压缩参数")
+    @PostMapping("/getVideoCompressionCfg")
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
+    @Log(title = "获取码流压缩参数", businessType = BusinessType.CONTROL)
+    public @ResponseBody
+    AjaxResult getVideoCompressionCfg(@RequestBody CameraCmd cmd) {
+        return AjaxResult.success(sdk.getVideoCompressionCfg(cmd));
+    }
+
+    @ApiOperation("在线状态")
+    @PostMapping("/state")
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId"})
+    @Log(title = "在线状态", businessType = BusinessType.CONTROL)
+    public @ResponseBody
+    AjaxResult getOnlineState(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        boolean onLine = sdk.isOnLine(cmd);
+        return AjaxResult.success(onLine);
+    }
+
+    @ApiOperation(value = "云台控制", notes = "Code:1-左上 2-上 3-右上 4-左 5-巡航 6-右 7-左下 8-下 9-右下 10-焦距变大 11-焦距变小\n" +
+            "12-焦点前调 13-焦点后调 14-光圈扩大 15-光圈缩小 16-雨刷开启")
+    @PostMapping("/PTZControlWithSpeed")
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.speed", "cmd.enable", "cmd.code"})
+    @Log(title = "云台控制", businessType = BusinessType.CONTROL)
+    public @ResponseBody
+    AjaxResult PTZControlWithSpeed(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return toAjax(sdk.pTZControlWithSpeed(cmd));
+    }
+
+    @ApiOperation("调用预置点")
+    @PostMapping("/gotoPreset")
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.presetIndex"})
+    @Log(title = "调用预置点", businessType = BusinessType.CONTROL)
+    public @ResponseBody
+    AjaxResult gotoPreset(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return toAjax(sdk.gotoPreset(cmd));
+    }
+
+    @ApiOperation("设置预置点")
+    @PostMapping("/setPreset")
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.presetIndex"})
+    @Log(title = "设置预置点", businessType = BusinessType.CONTROL)
+    public @ResponseBody
+    AjaxResult setPreset(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return toAjax(sdk.setPreset(cmd));
+    }
+
+    @ApiOperation("获取聚焦值")
+    @PostMapping("/getFocusPos")
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
+    @Log(title = "获取聚焦值", businessType = BusinessType.CONTROL)
+    public @ResponseBody
+    AjaxResult getFocusPos(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        Map<String, Object> Map = sdk.getFocusPos(cmd);
+        return AjaxResult.success("获取聚焦值", Map);
+    }
+
+    @ApiOperation("设置聚焦值")
+    @PostMapping("/setFocusPos")
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.dwFocusPos"})
+    @Log(title = "设置聚焦值", businessType = BusinessType.CONTROL)
+    public @ResponseBody
+    AjaxResult setFocusPos(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return toAjax(sdk.setFocusPos(cmd));
+    }
+
+    @ApiOperation("获取PTZ")
+    @PostMapping("/getPTZ")
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
+    @Log(title = "获取PTZ", businessType = BusinessType.CONTROL)
+    public @ResponseBody
+    AjaxResult getPTZ(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        Map<String, Object> ptzMap = sdk.getPtz(cmd);
+        return AjaxResult.success("获取ptz", ptzMap);
+    }
+
+    @ApiOperation("获取PTZ范围")
+    @PostMapping("/getPTZScope")
+    @Log(title = "获取PTZ范围", businessType = BusinessType.CONTROL)
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
+    public @ResponseBody
+    AjaxResult getPTZScope(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        Map<String, Object> ptzMap = sdk.getPtzScope(cmd);
+        return AjaxResult.success("获取ptz范围", ptzMap);
+    }
+
+    @ApiOperation("设置PTZ")
+    @PostMapping("/setPTZ")
+    @Log(title = "设置PTZ", businessType = BusinessType.CONTROL)
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.ptzMap"})
+    public @ResponseBody
+    AjaxResult setPTZ(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return toAjax(sdk.setPtz(cmd));
+    }
+
+    @ApiOperation("指向目标")
+    @PostMapping("/setTargetPosition")
+    @Log(title = "指向目标", businessType = BusinessType.CONTROL)
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.targetPosition"})
+    public @ResponseBody
+    AjaxResult setTargetPosition(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return toAjax(sdk.guideTargetPosition(cmd));
+    }
+
+
+    @ApiOperation("设置零方位角")
+    @PostMapping("/setZeroPTZ")
+    @Log(title = "设置零方位角", businessType = BusinessType.CONTROL)
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
+    public @ResponseBody
+    AjaxResult setZeroPTZ(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return toAjax(sdk.setZeroPtz(cmd));
+    }
+
+    @ApiOperation("设置锁定")
+    @PostMapping("/setPTZLock")
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.expired"})
+    @Log(title = "设置锁定", businessType = BusinessType.CONTROL)
+    public @ResponseBody
+    AjaxResult setPTZLock(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return AjaxResult.success(sdk.controlLock(cmd));
+    }
+
+    @ApiOperation("设置解锁")
+    @PostMapping("/setPTZUnLock")
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId"})
+    @Log(title = "设置解锁", businessType = BusinessType.CONTROL)
+    public @ResponseBody
+    AjaxResult setPTZUnLock(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return AjaxResult.success(sdk.controlUnLock(cmd));
+    }
+
+    @ApiOperation("获取云台锁定信息")
+    @PostMapping("/getPTZLockInfo")
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
+    @Log(title = "获取云台锁定信息", businessType = BusinessType.CONTROL)
+    public @ResponseBody
+    AjaxResult getPTZLockInfo(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        int byWorkMode = sdk.getPTZLockInfo(cmd);
+        if (byWorkMode == 0) {
+            return AjaxResult.success("云台锁定状态:解锁");
+        } else if (byWorkMode == 1) {
+            return AjaxResult.success("云台锁定状态:锁定");
+        } else {
+            return AjaxResult.error("云台锁定状态:失败");
+        }
+    }
+
+    @ApiOperation("透雾开关")
+    @PostMapping("/defogcfg")
+    @Log(title = "透雾开关", businessType = BusinessType.CONTROL)
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"})
+    public @ResponseBody
+    AjaxResult defogcfg(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return toAjax(sdk.controlDefogcfg(cmd));
+    }
+
+    @ApiOperation("红外开关")
+    @PostMapping("/infrarecfg")
+    @Log(title = "红外开关", businessType = BusinessType.CONTROL)
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"})
+    public @ResponseBody
+    AjaxResult infrarecfg(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return toAjax(sdk.controlInfrarecfg(cmd));
+    }
+
+    @ApiOperation(value = "手动/自动聚焦", notes = "true手动flase自动")
+    @PostMapping("/focusMode")
+    @Log(title = "手动/自动聚焦", businessType = BusinessType.CONTROL)
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"})
+    public @ResponseBody
+    AjaxResult enableFocusMode(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return toAjax(sdk.controlFocusMode(cmd));
+    }
+
+    @ApiOperation(value = "获取聚焦模式", notes = "1手动2自动")
+    @PostMapping("/getFocusMode")
+    public @ResponseBody
+    AjaxResult getFocusMode(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        String focusMode = sdk.getFocusMode(cmd);
+        return AjaxResult.success(focusMode);
+    }
+
+    @ApiOperation("云台加热")
+    @PostMapping("/heateRpwron")
+    @Log(title = "云台加热", businessType = BusinessType.CONTROL)
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"})
+    public @ResponseBody
+    AjaxResult heateRpwron(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return toAjax(sdk.controlPTHeateRpwron(cmd));
+    }
+
+
+    @ApiOperation("镜头加热")
+    @PostMapping("/cameraDeicing")
+    @Log(title = "镜头加热", businessType = BusinessType.CONTROL)
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"})
+    public @ResponseBody
+    AjaxResult cameraDeicing(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return toAjax(sdk.controlCameraDeicing(cmd));
+    }
+
+    @PostMapping("/captureJPEGPicture")
+    public @ResponseBody
+    AjaxResult captureJPEGPicture(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        String base64Str = sdk.captureJPEGPicture(cmd);
+        return toAjaxString(base64Str, "相机抓图");
+    }
+
+    @ApiOperation("相机抓图")
+    @PostMapping("/picCutCate")
+    @Log(title = "相机抓图", businessType = BusinessType.CONTROL)
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"})
+    public @ResponseBody
+    AjaxResult picCutCate(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        String path = sdk.picCutCate(cmd);
+        return toAjaxString(path, "相机抓图");
+    }
+
+    @ApiOperation("手动录像")
+    @PostMapping("/record")
+    @Log(title = "手动录像", businessType = BusinessType.CONTROL)
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"})
+    public @ResponseBody
+    AjaxResult record(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        String path = sdk.record(cmd);
+        return toAjaxString(path, "手动录像");
+    }
+
+    @ApiOperation("获取相机架设参数")
+    @PostMapping("/getCameraSetupCFG")
+    @Log(title = "获取相机架设参数", businessType = BusinessType.CONTROL)
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"})
+    public @ResponseBody
+    AjaxResult getCameraSetupCFG(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
+        return AjaxResult.success(sdk.getGisInfo(cmd));
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
index 5a3e96a..4fb1c27 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
@@ -1,1707 +1,1707 @@
-package com.ruoyi.device.hiksdk.service.impl;
-
-import com.ruoyi.alarm.global.domain.GuidePriorityQueue;
-import com.ruoyi.alarm.global.domain.GuideTask;
-import com.ruoyi.common.annotation.SdkOperate;
-import com.ruoyi.common.utils.file.FileUtils;
-import com.ruoyi.common.utils.file.MimeTypeUtils;
-import com.ruoyi.common.utils.spring.SpringUtils;
-import com.ruoyi.common.utils.uuid.IdUtils;
-import com.ruoyi.device.camera.domain.CameraCmd;
-import com.ruoyi.device.camera.service.IArdCamerasService;
-import com.ruoyi.device.channel.domain.ArdChannel;
-import com.ruoyi.device.channel.service.IArdChannelService;
-import com.ruoyi.device.hiksdk.common.GlobalVariable;
-import com.ruoyi.device.camera.domain.ArdCameras;
-import com.ruoyi.media.domain.Vtdu;
-import com.ruoyi.media.service.IVtduService;
-import com.ruoyi.utils.gis.GisUtil;
-import com.ruoyi.device.hiksdk.sdk.HCNetSDK;
-import com.ruoyi.device.hiksdk.service.IHikClientService;
-import com.ruoyi.device.hiksdk.sdk.LoginResultCallBack;
-import com.ruoyi.utils.minio.MinioUtil;
-import com.sun.jna.Native;
-import com.sun.jna.NativeLong;
-import com.sun.jna.Platform;
-import com.sun.jna.Pointer;
-import com.sun.jna.ptr.IntByReference;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-
-import java.util.Base64;
-import javax.annotation.Resource;
-import java.io.*;
-import java.math.BigDecimal;
-import java.nio.ByteBuffer;
-import java.text.DecimalFormat;
-import java.util.*;
-import java.util.concurrent.PriorityBlockingQueue;
-
-import static com.ruoyi.device.hiksdk.sdk.HCNetSDK.*;
-
-/**
- * @ClassName: hikClientServiceImpl
- * @Description: 海康操作客户端实现类
- * @Author: Administrator
- * @Date: 2023年01月17日 11:25
- * @Version: 1.2
- **/
-@Slf4j(topic = "hikSdk")
-@Service
-public class HikClientServiceImpl implements IHikClientService {
-
-    @Resource
-    private IArdCamerasService ardCamerasService;
-    @Resource
-    private IArdChannelService ardChannelService;
-    @Resource
-    private IVtduService vtduService;
-
-    private static HCNetSDK hCNetSDK;
-
-    @Override
-    public void loadHCNetSDKLib() {
-        try {
-            log.debug("开始加载sdk库文件路径");
-            if (Platform.isWindows()) {
-                String WIN_PATH = System.getProperty("user.dir") + File.separator + "lib\\hikDll\\HCNetSDK.dll";
-                log.debug("当前Windows平台的sdk库路径:" + WIN_PATH);
-                hCNetSDK = (HCNetSDK) Native.loadLibrary(WIN_PATH, HCNetSDK.class);
-            } else {
-                log.debug("Linux平台");
-                String LINUX_PATH = System.getProperty("user.dir") + File.separator + "hiklib" + File.separator + "libhcnetsdk.so";
-                log.debug("当前Linux平台的sdk库路径:" + LINUX_PATH);
-                hCNetSDK = (HCNetSDK) Native.loadLibrary(LINUX_PATH, HCNetSDK.class);
-
-                //设置HCNetSDKCom组件库所在路径
-                //libhcnetsdk.so
-                String strPathCom = "/home/hiklib";
-                NET_DVR_LOCAL_SDK_PATH struComPath = new NET_DVR_LOCAL_SDK_PATH();
-                System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length());
-                struComPath.write();
-                hCNetSDK.NET_DVR_SetSDKInitCfg(2, struComPath.getPointer());
-
-                //设置libcrypto.so所在路径
-                BYTE_ARRAY ptrByteArrayCrypto = new BYTE_ARRAY(256);
-                String strPathCrypto = "/home/hiklib/libcrypto.so.1.1";
-                System.arraycopy(strPathCrypto.getBytes(), 0, ptrByteArrayCrypto.byValue, 0, strPathCrypto.length());
-                ptrByteArrayCrypto.write();
-                hCNetSDK.NET_DVR_SetSDKInitCfg(3, ptrByteArrayCrypto.getPointer());
-
-                //设置libssl.so所在路径
-                BYTE_ARRAY ptrByteArraySsl = new BYTE_ARRAY(256);
-                String strPathSsl = "/home/hiklib/libssl.so.1.1";
-                System.arraycopy(strPathSsl.getBytes(), 0, ptrByteArraySsl.byValue, 0, strPathSsl.length());
-                ptrByteArraySsl.write();
-                hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArraySsl.getPointer());
-            }
-        } catch (Exception ex) {
-            log.error("加载库文件异常:" + ex.getMessage());
-        }
-    }
-
-    @Override
-    /**
-     * @描述 注册登录 只支持同步登陆,且官方不建议直接在此接口下写耗时操作
-     * @参数 [dvrLogin]
-     * @返回值 java.lang.Integer
-     * @创建人 刘苏义
-     * @创建时间 2023/1/17 16:12
-     * @修改人和其它信息
-     */
-    public void syncLogin(ArdCameras camera) {
-        // 初始化
-        if (!hCNetSDK.NET_DVR_Init()) {
-            log.error("SDK初始化失败");
-        }
-        //打印海康sdk日志
-        if (Platform.isWindows()) {
-            String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
-            hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
-        } else {
-            hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
-        }
-        String m_sDeviceIP = camera.getIp();
-        String m_sUsername = camera.getUsername();
-        String m_sPassword = camera.getPassword();
-        short m_sPort = camera.getPort().shortValue();
-        //设置连接时间与重连时间
-        hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
-        hCNetSDK.NET_DVR_SetReconnect(100000, true);
-        //设备信息, 输出参数
-        HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
-        HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
-
-        // 注册设备-登录参数,包括设备地址、登录用户、密码等
-        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.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());
-        m_strLoginInfo.wPort = m_sPort;
-        m_strLoginInfo.byVerifyMode = 0;
-        m_strLoginInfo.byLoginMode = 0;
-        //是否异步登录:0- 否,1- 是  windowsSDK里是true和false
-        m_strLoginInfo.bUseAsynLogin = false;
-        m_strLoginInfo.write();
-        //同步登录
-        int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
-        if (lUserID < 0) {
-            int errorCode = hCNetSDK.NET_DVR_GetLastError();
-            log.error("登录异常:" + errorCode);
-
-            log.debug(camera.getIp() + ":" + camera.getPort() + "登录失败");
-            camera.setChanNum(0);
-            camera.setLoginId(-1);
-            camera.setState("0");
-        } else {
-
-            if (GlobalVariable.loginMap.containsKey(camera.getId())) {
-                GlobalVariable.loginMap.remove(camera.getId());
-            }
-            //删除管理通道
-            ardChannelService.deleteArdChannelByDeviceId(camera.getId());
-            GlobalVariable.loginMap.put(camera.getId(), lUserID);
-            log.debug(camera.getIp() + ":" + camera.getPort() + "登录成功");
-
-            camera.setLoginId(lUserID);
-            camera.setState("1");
-            camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum);
-            camera.setStartDChan((int) m_strDeviceInfo.struDeviceV30.byStartDChan);
-            //获取最新通道
-            List<ArdChannel> cameraChannelList = getCameraChannelList(camera);
-            if (cameraChannelList.size() > 0) {
-                for (ArdChannel channel : cameraChannelList) {
-                    channel.setId(IdUtils.simpleUUID());
-                    ardChannelService.insertArdChannel(channel);
-                }
-                //添加到流媒体
-                for (ArdChannel channel : cameraChannelList) {
-                    String name = camera.getId() + "_" + channel.getChanNo();
-                    String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/h264/ch" + channel.getChanNo() + "/main/av_stream";
-                    Vtdu vtdu = vtduService.selectVtduByName(name);
-                    if (vtdu == null) {
-                        //添加到流媒体
-                        vtdu = new Vtdu();
-                        vtdu.setRtspSource(rtspSource);
-                        vtdu.setName(camera.getId() + "_" + channel.getChanNo());
-                        vtdu.setIsCode("0");//默认不转码
-                        vtdu.setMode("1");//默认CPU软解码
-                        vtdu.setCameraId(camera.getId());
-                        vtduService.insertVtdu(vtdu);
-                    } else {
-                        if (!rtspSource.equals(vtdu.getRtspSource())) {
-                            //更新rtsp地址
-                            vtdu.setRtspSource(rtspSource);
-                            vtduService.updateVtdu(vtdu);
-                        }
-                    }
-                }
-            }
-            //创建引导队列
-            if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
-                Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
-                PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator);
-                GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
-            }
-            ardCamerasService.updateArdCameras(camera);
-        }
-    }
-
-    /**
-     * @描述 注册登录 集成于NET_DVR_Login_V30,支持同步和异步登录
-     * @参数 [dvrLogin]
-     * @返回值 java.lang.Integer
-     * @创建人 刘苏义
-     * @创建时间 2023/1/17 16:12
-     * @修改人和其它信息
-     */
-    @Override
-    public void asyncLogin(ArdCameras camera) {
-        // 初始化
-        if (!hCNetSDK.NET_DVR_Init()) {
-            log.error("SDK初始化失败");
-        }
-        //打印海康sdk日志
-        if (Platform.isWindows()) {
-            String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
-            hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
-        } else {
-            hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
-        }
-        String m_sDeviceIP = camera.getIp();
-        String m_sUsername = camera.getUsername();
-        String m_sPassword = camera.getPassword();
-        short m_sPort = camera.getPort().shortValue();
-        //设置连接时间与重连时间
-        hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
-        hCNetSDK.NET_DVR_SetReconnect(100000, true);
-        //设备信息, 输出参数
-        HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
-        HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
-
-        // 注册设备-登录参数,包括设备地址、登录用户、密码等
-        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.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());
-        m_strLoginInfo.wPort = m_sPort;
-        m_strLoginInfo.byVerifyMode = 0;
-        m_strLoginInfo.byLoginMode = 0;
-        //是否异步登录:0- 否,1- 是  windowsSDK里是true和false
-        m_strLoginInfo.bUseAsynLogin = true;
-        //异步登录回调
-        m_strLoginInfo.cbLoginResult = new LoginResultCallBack(camera);
-        m_strLoginInfo.write();
-        int i = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
-        if (i < 0) {
-            int errorCode = hCNetSDK.NET_DVR_GetLastError();
-            log.error("登录异常:" + errorCode);
-        }
-
-    }
-
-    /**
-     * @描述 登录所有相机
-     * @参数 []
-     * @返回值 void
-     * @创建人 刘苏义
-     * @创建时间 2023/2/3 10:10
-     * @修改人和其它信息
-     */
-    @Override
-    public void loginAll() {
-        try {
-            log.debug("加载lib完成!");
-            ArdCameras ardCamera = new ArdCameras();
-            ardCamera.setFactory("1");
-            List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(ardCamera);
-            for (ArdCameras camera : ardCameras) {
-                Thread.sleep(500);
-                //异步登录
-                asyncLogin(camera);
-            }
-        } catch (Exception ex) {
-            log.error("初始化登录相机异常:" + ex.getMessage());
-        }
-    }
-
-    /**
-     * @描述 注销登录
-     * @参数 [dvrLogin]
-     * @返回值 java.lang.Integer
-     * @创建人 刘苏义
-     * @创建时间 2023/1/17 16:12
-     * @修改人和其它信息
-     */
-    @Override
-    public boolean logout(String cameraId) {
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return false;
-        }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        boolean b = hCNetSDK.NET_DVR_Logout(userId);
-        if (b) {
-            GlobalVariable.loginMap.remove(cameraId);
-        }
-        return b;
-    }
-
-    /**
-     * 是否在线
-     *
-     * @param cmd 相机命令
-     */
-    @Override
-    public boolean isOnLine(CameraCmd cmd) {
-        try {
-            String cameraId = cmd.getCameraId();
-            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-                return false;
-            }
-            Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-            return hCNetSDK.NET_DVR_RemoteControl(userId, NET_DVR_CHECK_USER_STATUS, null, 0);
-        } catch (Exception ex) {
-            log.error("检测在线异常:" + ex.getMessage());
-            return false;
-        }
-    }
-
-    /**
-     * @描述 带速度的云台控制操作
-     * Code:1-左上 2-上 3-右上 4-左 5-巡航 6-右 7-左下 8-下 9-右下 10-焦距变大 11-焦距变小
-     * 12-焦点前调 13-焦点后调 14-光圈扩大 15-光圈缩小 16-雨刷开启
-     * @参数 [userId, channelNum, speed]
-     * @返回值 boolean
-     * @创建人 刘苏义
-     * @创建时间 2023/1/17 16:14
-     * @修改人和其它信息
-     */
-    @Override
-    @SdkOperate
-    public boolean pTZControlWithSpeed(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        boolean enable = cmd.isEnable();
-        Integer channelNum = cmd.getChanNo();
-        Integer speed = cmd.getSpeed();
-        Integer code = cmd.getCode();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return false;
-        }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        int dwStop;
-        if (enable) {
-            dwStop = 0;//开启
-        } else {
-            dwStop = 1;//关闭
-        }
-        int dwPTZCommand = -1;
-        switch (code) {
-            /*方向*/
-            case 1:
-                dwPTZCommand = HCNetSDK.UP_LEFT;
-                break;
-            case 2:
-                dwPTZCommand = HCNetSDK.TILT_UP;
-                break;
-            case 3:
-                dwPTZCommand = HCNetSDK.UP_RIGHT;
-                break;
-            case 4:
-                dwPTZCommand = HCNetSDK.PAN_LEFT;
-                break;
-            case 5:
-                dwPTZCommand = HCNetSDK.RUN_SEQ;
-                break;
-            case 6:
-                dwPTZCommand = HCNetSDK.PAN_RIGHT;
-                break;
-            case 7:
-                dwPTZCommand = HCNetSDK.DOWN_LEFT;
-                break;
-            case 8:
-                dwPTZCommand = HCNetSDK.TILT_DOWN;
-                break;
-            case 9:
-                dwPTZCommand = HCNetSDK.DOWN_RIGHT;
-                break;
-            /*焦距*/
-            case 10:
-                dwPTZCommand = HCNetSDK.ZOOM_IN;
-                break;
-            case 11:
-                dwPTZCommand = HCNetSDK.ZOOM_OUT;
-                break;
-            /*焦点*/
-            case 12:
-                dwPTZCommand = HCNetSDK.FOCUS_NEAR;
-                break;
-            case 13:
-                dwPTZCommand = HCNetSDK.FOCUS_FAR;
-                break;
-            /*光圈*/
-            case 14:
-                dwPTZCommand = HCNetSDK.IRIS_OPEN;
-                break;
-            case 15:
-                dwPTZCommand = HCNetSDK.IRIS_CLOSE;
-                break;
-            /*雨刷*/
-            case 16:
-                dwPTZCommand = HCNetSDK.WIPER_PWRON;
-                break;
-        }
-        boolean bool = hCNetSDK.NET_DVR_PTZControlWithSpeed_Other(userId, channelNum, dwPTZCommand, dwStop, speed);
-        if (!bool) {
-            int errorCode = hCNetSDK.NET_DVR_GetLastError();
-            log.error("控制失败,请稍后重试" + errorCode);
-        }
-        return bool;
-    }
-
-    /**
-     * 设置聚焦值
-     *
-     * @param cmd 相机命令
-     */
-    @Override
-    @SdkOperate
-    public boolean setFocusPos(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChanNo();
-        Integer dwFocusPos = cmd.getDwFocusPos();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return false;
-        }
-        // 获取参数
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        HCNetSDK.NET_DVR_STD_CONFIG struStdCfg = new HCNetSDK.NET_DVR_STD_CONFIG();
-        HCNetSDK.NET_DVR_GIS_INFO struGisInfo = new HCNetSDK.NET_DVR_GIS_INFO();
-        struGisInfo.struPtzPosEx.dwFocus = dwFocusPos;
-        struStdCfg.read();
-        IntByReference lchannel = new IntByReference(channelNum);
-        struStdCfg.lpInBuffer = struGisInfo.getPointer();
-        struStdCfg.lpCondBuffer = lchannel.getPointer();
-        struStdCfg.dwCondSize = 4;
-        struStdCfg.dwInSize = struGisInfo.size();
-        struStdCfg.write();//设置前之前要write()
-        boolean bool = hCNetSDK.NET_DVR_SetSTDConfig(userId, NET_DVR_GET_GISINFO, struStdCfg);
-        if (!bool) {
-            int code = hCNetSDK.NET_DVR_GetLastError();
-            log.error("设置GIS信息数据失败,请稍后重试" + code);
-            return false;
-        } else {
-            return true;
-        }
-    }
-
-    /**
-     * 获取聚焦值
-     *
-     * @param cmd 相机命令
-     */
-    @Override
-    public Map<String, Object> getFocusPos(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChanNo();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return new HashMap<>();
-        }
-        // 获取参数
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        HCNetSDK.NET_DVR_STD_CONFIG struStdCfg = new HCNetSDK.NET_DVR_STD_CONFIG();
-        HCNetSDK.NET_DVR_GIS_INFO struGisInfo = new HCNetSDK.NET_DVR_GIS_INFO();
-        struStdCfg.read();
-        IntByReference lchannel = new IntByReference(channelNum);
-        struStdCfg.lpCondBuffer = lchannel.getPointer();
-        struStdCfg.dwCondSize = 4;
-        struStdCfg.lpOutBuffer = struGisInfo.getPointer();
-        struStdCfg.dwOutSize = struGisInfo.size();
-        struStdCfg.write();//设置前之前要write()
-        boolean bool = hCNetSDK.NET_DVR_GetSTDConfig(userId, NET_DVR_GET_GISINFO, struStdCfg);
-        if (!bool) {
-            int code = hCNetSDK.NET_DVR_GetLastError();
-            log.error("获取GIS信息数据失败,请稍后重试" + code);
-            return new HashMap<>();
-        } else {
-            struGisInfo.read();
-            Map<String, Object> map = new HashMap<>();
-            map.put("dwFocus", struGisInfo.struPtzPosEx.dwFocus);
-            return map;
-        }
-    }
-
-    /**
-     * 设置预置点
-     *
-     * @param cmd 相机命令
-     */
-    @Override
-    @SdkOperate
-    public boolean setPreset(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChanNo();
-        Integer PresetIndex = cmd.getPresetIndex();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return false;
-        }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, SET_PRESET, PresetIndex);
-        if (!bool) {
-            int code = hCNetSDK.NET_DVR_GetLastError();
-            log.error("预置点设置失败,请稍后重试" + code);
-        }
-        return bool;
-    }
-
-    /**
-     * 转到预置点
-     *
-     * @param cmd 相机命令
-     */
-    @Override
-    @SdkOperate
-    public boolean gotoPreset(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChanNo();
-        Integer PresetIndex = cmd.getPresetIndex();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return false;
-        }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, GOTO_PRESET, PresetIndex);
-        if (!bool) {
-            int code = hCNetSDK.NET_DVR_GetLastError();
-            log.error("预置点设置失败,请稍后重试" + code);
-        }
-        return bool;
-    }
-
-    /**
-     * @描述 获取通道压缩参数
-     * @参数 [cameraId, channelNum]
-     * @返回值 java.lang.String
-     * @创建人 刘苏义
-     * @创建时间 2023/2/3 8:36
-     * @修改人和其它信息
-     */
-    @Override
-    public Map<String, String> getVideoCompressionCfg(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        Integer chanNo = cmd.getChanNo();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return null;
-        }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-
-        Map<String, String> map = new HashMap<>();
-        NET_DVR_COMPRESSIONCFG_V30 compressioncfg = new NET_DVR_COMPRESSIONCFG_V30();
-        compressioncfg.write();
-        Pointer pioint = compressioncfg.getPointer();
-        IntByReference ibrBytesReturned = new IntByReference(0);
-        try {
-            boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_COMPRESSCFG_V30, chanNo, pioint, compressioncfg.size(), ibrBytesReturned);
-            if (bool) {
-                compressioncfg.read();
-                //码流类型:0-视频流,1-复合流,0xfe- 自动(和源一致)
-                String streamType = "";
-                switch (compressioncfg.struNormHighRecordPara.byStreamType) {
-                    case 0:
-                        streamType = "视频流";
-                        break;
-                    case 1:
-                        streamType = "复合流";
-                        break;
-                    default:
-                        streamType = "未知";
-                        break;
-                }
-                //视频编码类型:0-私有264,1-标准h264,2-标准mpeg4,7-M-JPEG,8-MPEG2,9-SVAC,10-标准h265,0xfe- 自动(和源一致),0xff-无效
-                String videoEncType = "";
-                switch (compressioncfg.struNormHighRecordPara.byVideoEncType) {
-                    case 0:
-                        videoEncType = "私有264";
-                        break;
-                    case 1:
-                        videoEncType = "标准h264";
-                        break;
-                    case 2:
-                        videoEncType = "标准mpeg4";
-                        break;
-                    case 7:
-                        videoEncType = "M-JPEG";
-                        break;
-                    case 8:
-                        videoEncType = "MPEG2";
-                        break;
-                    case 9:
-                        videoEncType = "SVAC";
-                        break;
-                    case 10:
-                        videoEncType = "标准h265";
-                        break;
-                    default:
-                        videoEncType = "未知";
-                        break;
-                }
-                //视频码率
-                String videoBitrate = "";
-                switch (compressioncfg.struNormHighRecordPara.dwVideoBitrate) {
-                    case 0:
-                        videoBitrate = "保留";
-                        break;
-                    case 1:
-                        videoBitrate = "16K(保留)";
-                        break;
-                    case 2:
-                        videoBitrate = "32K";
-                        break;
-                    case 3:
-                        videoBitrate = "48k";
-                        break;
-                    case 4:
-                        videoBitrate = "64k";
-                        break;
-                    case 5:
-                        videoBitrate = "80k";
-                        break;
-                    case 6:
-                        videoBitrate = "96k";
-                        break;
-                    case 7:
-                        videoBitrate = "128k";
-                        break;
-                    case 8:
-                        videoBitrate = "160k";
-                        break;
-                    case 9:
-                        videoBitrate = "192k";
-                        break;
-                    case 10:
-                        videoBitrate = "224k";
-                        break;
-                    case 11:
-                        videoBitrate = "256K";
-                        break;
-                    case 12:
-                        videoBitrate = "320K";
-                        break;
-                    case 13:
-                        videoBitrate = "384K";
-                        break;
-                    case 14:
-                        videoBitrate = "448K";
-                        break;
-                    case 15:
-                        videoBitrate = "512K";
-                        break;
-                    case 16:
-                        videoBitrate = "640K";
-                        break;
-                    case 17:
-                        videoBitrate = "768K";
-                        break;
-                    case 18:
-                        videoBitrate = "896K";
-                        break;
-                    case 19:
-                        videoBitrate = "1024K";
-                        break;
-                    case 20:
-                        videoBitrate = "1280K";
-                        break;
-                    case 21:
-                        videoBitrate = "1536K";
-                        break;
-                    case 22:
-                        videoBitrate = "1792K";
-                        break;
-                    case 23:
-                        videoBitrate = "2048K";
-                        break;
-                    case 24:
-                        videoBitrate = "3072K";
-                        break;
-                    case 25:
-                        videoBitrate = "4096K";
-                        break;
-                    case 26:
-                        videoBitrate = "8192K";
-                        break;
-                    case 27:
-                        videoBitrate = "16384K";
-                        break;
-                    default:
-                        videoBitrate = "其他";
-                        break;
-                }
-                //视频输出口分辨率:0- 1024x768,1- 1280x720,2-1280x1024,3- 1680x1050,4- 1920x1080,5- 3840*2160
-                String resolution = "";
-                switch (compressioncfg.struNormHighRecordPara.byResolution) {
-                    case 0:
-                        resolution = "DCIF(528*384/528*320)";
-                        break;
-                    case 1:
-                        resolution = "CIF(352*288/352*240)";
-                        break;
-                    case 2:
-                        resolution = "QCIF(176*144/176*120)";
-                        break;
-                    case 3:
-                        resolution = "4CIF(704*576/704*480)";
-                        break;
-                    case 4:
-                        resolution = "2CIF(704*288/704*240)";
-                        break;
-                    case 6:
-                        resolution = "QVGA(320*240)";
-                        break;
-                    case 7:
-                        resolution = "QQVGA(160*120)";
-                        break;
-                    case 16:
-                        resolution = "VGA(640*480)";
-                        break;
-                    case 17:
-                        resolution = "UXGA(1600*1200)";
-                        break;
-                    case 18:
-                        resolution = "SVGA(800*600)";
-                        break;
-                    case 19:
-                        resolution = "HD720P(1280*720)";
-                        break;
-                    case 20:
-                        resolution = "XVGA(1280*960)";
-                        break;
-                    case 21:
-                        resolution = "HD900P(1600*900)";
-                        break;
-                    case 22:
-                        resolution = "1360*1024";
-                        break;
-                    case 23:
-                        resolution = "1536*1536";
-                        break;
-                    case 24:
-                        resolution = "1920*1920";
-                        break;
-                    case 27:
-                        resolution = "1920*1080p";
-                        break;
-                    case 28:
-                        resolution = "2560*1920";
-                        break;
-                    case 29:
-                        resolution = "1600*304";
-                        break;
-                    case 30:
-                        resolution = "2048*1536";
-                        break;
-                    default:
-                        resolution = "不在当前分辨率索引,请联系管理员添加";
-                        break;
-                }
-                map.put("resolution", resolution);
-                map.put("videoBitrate", videoBitrate);
-                map.put("videoEncType", videoEncType);
-                map.put("streamType", streamType);
-
-            } else {
-                int code = hCNetSDK.NET_DVR_GetLastError();
-                log.error("控制失败,请稍后重试" + code);
-            }
-        } catch (Exception ex) {
-            log.error(ex.getMessage());
-        }
-        return map;
-    }
-
-    /**
-     * @描述 获取ptz信息
-     * @参数 [userId, channelNum]
-     * @返回值 boolean
-     * @创建人 刘苏义
-     * @创建时间 2023/1/17 16:36
-     * @修改人和其它信息
-     */
-    @Override
-    public Map<String, Object> getPtz(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChanNo();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return null;
-        }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-
-        NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS();
-        Pointer pioint = m_ptzPosCurrent.getPointer();
-        IntByReference ibrBytesReturned = new IntByReference(0);
-        m_ptzPosCurrent.write();
-        boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_PTZPOS, channelNum, pioint, m_ptzPosCurrent.size(), ibrBytesReturned);
-        if (bool) {
-            m_ptzPosCurrent.read();
-            // DecimalFormat df = new DecimalFormat("0.0");//设置保留位数
-            //16进制转Integer后除10,保留小数点1位
-            //实际显示的PTZ值是获取到的十六进制值的十分之一,
-            //如获取的水平参数P的值是0x1750,实际显示的P值为175度;
-            //获取到的垂直参数T的值是0x0789,实际显示的T值为78.9度;
-            //获取到的变倍参数Z的值是0x1100,实际显示的Z值为110倍。
-            BigDecimal b = new BigDecimal((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wPanPos)) / 10);
-            BigDecimal c = new BigDecimal((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wTiltPos)) / 10);
-            BigDecimal d = new BigDecimal((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wZoomPos)) / 10);
-            double p = b.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
-            double t = c.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
-            double z = d.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
-            //log.debug("T垂直参数为: " + p + "P水平参数为: " + t + "Z变倍参数为: " + z);
-            Map<String, Object> ptzMap = new HashMap<>();
-            ptzMap.put("p", p);
-            ptzMap.put("t", t);
-            ptzMap.put("z", z);
-            return ptzMap;
-        } else {
-            int code = hCNetSDK.NET_DVR_GetLastError();
-            log.error("控制失败,请稍后重试" + code);
-            return new HashMap<>();
-        }
-
-    }
-
-    /**
-     * @描述 设置ptz信息
-     * @参数 [userId, channelNum]
-     * @返回值 boolean
-     * @创建人 刘苏义
-     * @创建时间 2023/1/17 16:36
-     * @修改人和其它信息 注意俯仰角度负值需要加上360得到的正值进行设置
-     */
-    @Override
-    @SdkOperate
-    public boolean setPtz(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChanNo();
-        Map<String, Double> ptz = cmd.getPtzMap();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return false;
-        }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS();
-        m_ptzPosCurrent.wAction = 1;
-        try {
-            String p = String.valueOf((int) (ptz.get("p") * 10));
-            String t = String.valueOf((int) (ptz.get("t") * 10));
-            String z = String.valueOf((int) (ptz.get("z") * 10));
-            m_ptzPosCurrent.wPanPos = (short) (Integer.parseInt(p, 16));
-            m_ptzPosCurrent.wTiltPos = (short) (Integer.parseInt(t, 16));
-            m_ptzPosCurrent.wZoomPos = (short) (Integer.parseInt(z, 16));
-            Pointer point = m_ptzPosCurrent.getPointer();
-            m_ptzPosCurrent.write();
-            boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_PTZPOS, channelNum, point, m_ptzPosCurrent.size());
-            if (!bool) {
-                int code = hCNetSDK.NET_DVR_GetLastError();
-                log.error("设置ptz失败,请稍后重试" + code);
-            }
-            return bool;
-        } catch (Exception ex) {
-            log.error(ex.getMessage());
-            return false;
-        }
-    }
-
-    @Override
-    @SdkOperate
-    public boolean guideTargetPosition(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChanNo();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return false;
-        }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS();
-        m_ptzPosCurrent.wAction = 1;
-        try {
-            ArdCameras cameras = ardCamerasService.selectArdCamerasById(cameraId);
-            double[] cameraPositon = new double[]{cameras.getLongitude(), cameras.getLatitude(), cameras.getAltitude()};
-            double[] targetPositions = cmd.getTargetPosition();
-            double[] cameraPTZ = GisUtil.getCameraPTZ(cameraPositon, targetPositions, 20, 150);
-            String p = String.valueOf((int) (cameraPTZ[0] * 10));
-            String t = String.valueOf((int) (cameraPTZ[1] * 10));
-            String z = String.valueOf((int) (cameraPTZ[2] * 10));
-            m_ptzPosCurrent.wPanPos = (short) (Integer.parseInt(p, 16));
-            m_ptzPosCurrent.wTiltPos = (short) (Integer.parseInt(t, 16));
-            m_ptzPosCurrent.wZoomPos = (short) (Integer.parseInt(z, 16));
-            Pointer point = m_ptzPosCurrent.getPointer();
-            m_ptzPosCurrent.write();
-            boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_PTZPOS, channelNum, point, m_ptzPosCurrent.size());
-            if (!bool) {
-                int code = hCNetSDK.NET_DVR_GetLastError();
-                log.error("设置ptz失败,请稍后重试" + code);
-            }
-            return bool;
-        } catch (Exception ex) {
-            log.error("引导异常:" + ex.getMessage());
-            return false;
-        }
-    }
-
-    /**
-     * @描述 操控锁定
-     * @参数 [userId, channelNum]
-     * @返回值 boolean
-     * @创建人 刘苏义
-     * @创建时间 2023/1/17 16:36
-     * @修改人和其它信息 0-解锁 1-锁定
-     */
-    @Override
-    @SdkOperate
-    public boolean controlLock(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();//申请锁的相机
-        ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId);
-        Date now = new Date();
-        now.setTime(now.getTime() + cmd.getExpired() * 1000);
-        ardCameras.setOperatorExpired(now);//设置当前过期时间
-        ardCamerasService.updateArdCameras(ardCameras);
-        return true;
-    }
-
-    /**
-     * @描述 操控解锁
-     * @参数 [userId, channelNum]
-     * @返回值 boolean
-     * @创建人 刘苏义
-     * @创建时间 2023/6/30 15:36
-     * @修改人和其它信息
-     */
-    @Override
-    public boolean controlUnLock(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();//申请解锁的相机
-        String operator = cmd.getOperator();//申请者
-        ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId);
-        if (ardCameras.getOperatorId().equals(operator)) {
-            //如果解锁相机的当前用户是申请者,则清空该相机的过期时间
-            ardCameras.setOperatorExpired(null);
-            int i = ardCamerasService.updateArdCameras(ardCameras);
-            if (i > 0) {
-                log.debug(cameraId + "--解锁成功");
-            }
-        }
-        return true;
-    }
-
-    /**
-     * @描述 获取ptz锁定信息
-     * @参数 [userId, channelNum]
-     * @返回值 boolean
-     * @创建人 刘苏义
-     * @创建时间 2023/1/17 16:36
-     * @修改人和其它信息 0-解锁 1-锁定
-     */
-    @Override
-    public int getPTZLockInfo(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChanNo();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return -1;
-        }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        NET_DVR_PTZ_LOCKCFG netDvrPtzLockcfg = new NET_DVR_PTZ_LOCKCFG();
-        Pointer point = netDvrPtzLockcfg.getPointer();
-        IntByReference ibrBytesReturned = new IntByReference(0);
-        netDvrPtzLockcfg.write();
-        boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_PTZLOCKCFG, channelNum, point, netDvrPtzLockcfg.size(), ibrBytesReturned);
-        if (!bool) {
-            int code = hCNetSDK.NET_DVR_GetLastError();
-            log.error("获取ptz锁定信息失败,请稍后重试" + code);
-            return -1;
-        } else {
-            netDvrPtzLockcfg.read();
-            return netDvrPtzLockcfg.byWorkMode;
-        }
-    }
-
-    /**
-     * @描述 设置零方位角
-     * @参数 [userId, channelNum]
-     * @返回值 boolean
-     * @创建人 刘苏义
-     * @创建时间 2023/1/17 16:36
-     * @修改人和其它信息 注意俯仰角度负值需要加上360得到的正值进行设置
-     */
-    @Override
-    @SdkOperate
-    public boolean setZeroPtz(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChanNo();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return false;
-        }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        NET_DVR_INITIALPOSITIONCTRL initialpositionctrl = new NET_DVR_INITIALPOSITIONCTRL();
-
-        initialpositionctrl.dwSize = initialpositionctrl.size();
-        initialpositionctrl.byWorkMode = 0;
-        initialpositionctrl.dwChan = Short.parseShort(channelNum.toString());
-
-        Pointer point = initialpositionctrl.getPointer();
-        initialpositionctrl.write();
-        boolean bool = hCNetSDK.NET_DVR_RemoteControl(userId, NET_DVR_PTZ_INITIALPOSITIONCTRL, point, initialpositionctrl.size());
-        if (!bool) {
-            int i = hCNetSDK.NET_DVR_GetLastError();
-            log.error("错误码:" + i);
-        }
-        return bool;
-    }
-
-    /**
-     * @描述 获取球机PTZ参数取值范围
-     * @参数 [cameraId, channelNum]
-     * @返回值 java.util.Map<java.lang.String, java.lang.Object>
-     * @创建人 刘苏义
-     * @创建时间 2023/2/8 10:58
-     * @修改人和其它信息
-     */
-    @Override
-    public Map<String, Object> getPtzScope(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChanNo();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return new HashMap<>();
-        }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        NET_DVR_PTZSCOPE m_ptzPosCurrent = new NET_DVR_PTZSCOPE();
-        Pointer point = m_ptzPosCurrent.getPointer();
-        IntByReference ibrBytesReturned = new IntByReference(0);
-        m_ptzPosCurrent.write();
-        boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_PTZSCOPE, channelNum, point, m_ptzPosCurrent.size(), ibrBytesReturned);
-        if (!bool) {
-            int code = hCNetSDK.NET_DVR_GetLastError();
-            log.error("设置ptz失败,请稍后重试" + code);
-            return new HashMap<>();
-        } else {
-            m_ptzPosCurrent.read();
-            DecimalFormat df = new DecimalFormat("0.0");//设置保留位数
-
-            String wPanPosMax = df.format((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wPanPosMax)) / 10);
-            String wPanPosMin = df.format((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wTiltPosMax)) / 10);
-            String wTiltPosMax = df.format((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wTiltPosMax)) / 10);
-            String wTiltPosMin = df.format((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wTiltPosMin)) / 10);
-            String wZoomPosMax = df.format((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wZoomPosMax)) / 10);
-            String wZoomPosMin = df.format((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wZoomPosMin)) / 10);
-            Map<String, Object> ptzScopeMap = new HashMap<>();
-            ptzScopeMap.put("pMax", wPanPosMax);
-            ptzScopeMap.put("pMin", wPanPosMin);
-            ptzScopeMap.put("tMax", wTiltPosMax);
-            ptzScopeMap.put("tMin", wTiltPosMin);
-            ptzScopeMap.put("zMax", wZoomPosMax);
-            ptzScopeMap.put("zMin", wZoomPosMin);
-            return ptzScopeMap;
-        }
-
-    }
-
-    /**
-     * @描述 透雾开关
-     * @参数 [userId, channelNum, enable]
-     * @返回值 boolean
-     * @创建人 刘苏义
-     * @创建时间 2023/1/18 13:07
-     * @修改人和其它信息
-     */
-    @Override
-    @SdkOperate
-    public boolean controlDefogcfg(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        boolean enable = cmd.isEnable();
-        Integer channelNum = cmd.getChanNo();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return false;
-        }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        NET_DVR_CAMERAPARAMCFG_EX struCameraParam = new NET_DVR_CAMERAPARAMCFG_EX();
-        Pointer point = struCameraParam.getPointer();
-        IntByReference ibrBytesReturned = new IntByReference(0);
-        boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_CCDPARAMCFG_EX, channelNum, point, struCameraParam.size(), ibrBytesReturned);
-        if (!b_GetCameraParam) {
-            log.error("获取前端参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError());
-        }
-        struCameraParam.read();
-        log.debug("是否开启透雾:" + struCameraParam.struDefogCfg.byMode);
-
-        NET_DVR_DEFOGCFG defogcfg = new NET_DVR_DEFOGCFG();
-        if (enable) {
-            defogcfg.byMode = 2;//0-不启用 1-自动模式 2-常开模式
-            defogcfg.byLevel = 100;//取值范围0-100
-        } else {
-            defogcfg.byMode = 0;//0-不启用 1-自动模式 2-常开模式
-        }
-        struCameraParam.struDefogCfg = defogcfg;
-        struCameraParam.write();
-        boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_CCDPARAMCFG_EX, channelNum, point, struCameraParam.size());
-        if (!bool) {
-            int code = hCNetSDK.NET_DVR_GetLastError();
-            log.error("设置透雾失败,请稍后重试" + code);
-        }
-        log.debug("设置透雾成功");
-        return bool;
-    }
-
-    /**
-     * @描述 红外开关
-     * @参数 [userId, channelNum, enable]
-     * @返回值 boolean
-     * @创建人 刘苏义
-     * @创建时间 2023/1/18 13:07
-     * @修改人和其它信息
-     */
-    @Override
-    @SdkOperate
-    public boolean controlInfrarecfg(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        boolean enable = cmd.isEnable();
-        Integer channelNum = cmd.getChanNo();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return false;
-        }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        NET_DVR_CAMERAPARAMCFG_EX struDayNigh = new NET_DVR_CAMERAPARAMCFG_EX();
-        Pointer point = struDayNigh.getPointer();
-        IntByReference ibrBytesReturned = new IntByReference(0);
-        boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_CCDPARAMCFG_EX, channelNum, point, struDayNigh.size(), ibrBytesReturned);
-        if (!b_GetCameraParam) {
-            log.error("获取前端参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError());
-        }
-        struDayNigh.read();
-        log.debug("是否开启夜视:" + struDayNigh.struDayNight.byDayNightFilterType);
-
-        NET_DVR_DAYNIGHT daynight = new NET_DVR_DAYNIGHT();
-        if (enable) {
-            daynight.byDayNightFilterType = 1;//夜晚
-
-        } else {
-            daynight.byDayNightFilterType = 0;//白天
-        }
-        daynight.bySwitchScheduleEnabled = 1;
-        daynight.byDayNightFilterTime = 60;
-        struDayNigh.struDayNight = daynight;
-        struDayNigh.write();
-        boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_CCDPARAMCFG_EX, channelNum, point, struDayNigh.size());
-        if (!bool) {
-            int code = hCNetSDK.NET_DVR_GetLastError();
-            log.error("设置夜视失败,请稍后重试" + code);
-        }
-        log.debug("设置夜视成功");
-        return bool;
-    }
-
-    /**
-     * @描述 聚焦开关
-     * @参数 [userId, channelNum, enable]
-     * @返回值 boolean
-     * @创建人 刘苏义
-     * @创建时间 2023/1/18 13:07
-     * @修改人和其它信息
-     */
-    @Override
-    @SdkOperate
-    public boolean controlFocusMode(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        boolean enable = cmd.isEnable();
-        Integer channelNum = cmd.getChanNo();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return false;
-        }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        NET_DVR_FOCUSMODE_CFG struFocusMode = new NET_DVR_FOCUSMODE_CFG();
-        Pointer point = struFocusMode.getPointer();
-        IntByReference ibrBytesReturned = new IntByReference(0);
-        boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_FOCUSMODECFG, channelNum, point, struFocusMode.size(), ibrBytesReturned);
-        if (!b_GetCameraParam) {
-            log.error("获取前端参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError());
-        }
-        struFocusMode.read();
-        log.debug("当前聚焦模式:" + struFocusMode.byFocusMode);
-
-        if (enable) {
-            struFocusMode.byFocusMode = 1;//手动聚焦
-        } else {
-            struFocusMode.byAutoFocusMode = 1;
-            struFocusMode.byFocusMode = 2;//自动聚焦
-        }
-        struFocusMode.byFocusDefinitionDisplay = 1;
-        struFocusMode.byFocusSpeedLevel = 3;
-        struFocusMode.write();
-        boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_FOCUSMODECFG, channelNum, point, struFocusMode.size());
-        if (!bool) {
-            int code = hCNetSDK.NET_DVR_GetLastError();
-            log.error("设置聚焦模式失败,请稍后重试" + code);
-        }
-        log.debug("设置聚焦模式成功");
-        return bool;
-    }
-
-    /**
-     * @描述 获取聚焦模式
-     * @参数 [userId, channelNum]
-     * @返回值 boolean
-     * @创建人 刘苏义
-     * @创建时间 2023/1/18 13:07
-     * @修改人和其它信息
-     */
-    public String getFocusMode(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChanNo();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return "";
-        }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        NET_DVR_FOCUSMODE_CFG struFocusMode = new NET_DVR_FOCUSMODE_CFG();
-        Pointer point = struFocusMode.getPointer();
-        IntByReference ibrBytesReturned = new IntByReference(0);
-        boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_FOCUSMODECFG, channelNum, point, struFocusMode.size(), ibrBytesReturned);
-        if (!b_GetCameraParam) {
-            log.error("获取前端参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError());
-        }
-        struFocusMode.read();
-        log.debug("当前聚焦模式:" + struFocusMode.byFocusMode);
-        return String.valueOf(struFocusMode.byFocusMode);
-    }
-
-    /**
-     * @描述 云台加热开关
-     * @参数 [userId, channelNum, enable]
-     * @返回值 boolean
-     * @创建人 刘苏义
-     * @创建时间 2023/1/18 13:07
-     * @修改人和其它信息
-     */
-    @Override
-    @SdkOperate
-    public boolean controlPTHeateRpwron(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        boolean enable = cmd.isEnable();
-        Integer channelNum = cmd.getChanNo();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return false;
-        }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        int dwStop;
-        if (enable) {
-            dwStop = 0;//开启
-        } else {
-            dwStop = 1;//关闭
-        }
-        boolean bool = hCNetSDK.NET_DVR_PTZControl_Other(userId, channelNum, HEATER_PWRON, dwStop);
-        if (!bool) {
-            int code = hCNetSDK.NET_DVR_GetLastError();
-            log.error("设置云台加热失败,请稍后重试" + code);
-        }
-        log.debug("设置云台加热成功");
-        return bool;
-    }
-
-    /**
-     * @描述 镜头加热开关
-     * @参数 [userId, channelNum, enable]
-     * @返回值 boolean
-     * @创建人 刘苏义
-     * @创建时间 2023/1/18 13:07
-     * @修改人和其它信息
-     */
-    @Override
-    @SdkOperate
-    public boolean controlCameraDeicing(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        boolean enable = cmd.isEnable();
-        Integer channelNum = cmd.getChanNo();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return false;
-        }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        NET_DVR_DEVSERVER_CFG struDeicing = new NET_DVR_DEVSERVER_CFG();
-        Pointer point = struDeicing.getPointer();
-        IntByReference ibrBytesReturned = new IntByReference(0);
-        boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_DEVSERVER_CFG, channelNum, point, struDeicing.size(), ibrBytesReturned);
-        if (!b_GetCameraParam) {
-            log.error("获取前端参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError());
-        }
-        struDeicing.read();
-        log.debug("是否开启除冰:" + struDeicing.byEnableDeicing);
-
-        if (enable) {
-            struDeicing.byEnableDeicing = 1;//开启
-        } else {
-            struDeicing.byEnableDeicing = 0;//关闭
-        }
-        struDeicing.write();
-        boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_DEVSERVER_CFG, channelNum, point, struDeicing.size());
-        if (!bool) {
-            int code = hCNetSDK.NET_DVR_GetLastError();
-            log.error("设置镜头除冰失败,请稍后重试" + code);
-        }
-        log.debug("设置镜头除冰成功");
-        return bool;
-    }
-
-    /**
-     * 截图 返给前端
-     *
-     * @param cmd 相机命令
-     */
-    public String captureJPEGPicture(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChanNo();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return "";
-        }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        NET_DVR_WORKSTATE_V30 devwork = new NET_DVR_WORKSTATE_V30();
-        if (!hCNetSDK.NET_DVR_GetDVRWorkState_V30(userId, devwork)) {
-            // 返回Boolean值,判断是否获取设备能力
-            log.error("抓图失败,请稍后重试");
-        }
-        //图片质量
-        NET_DVR_JPEGPARA jpeg = new NET_DVR_JPEGPARA();
-        //设置图片分辨率
-        jpeg.wPicSize = 0;
-        //设置图片质量
-        jpeg.wPicQuality = 0;
-        IntByReference a = new IntByReference();
-        //设置图片大小
-        ByteBuffer jpegBuffer = ByteBuffer.allocate(1024 * 1024);
-        // 抓图到内存,单帧数据捕获并保存成JPEG存放在指定的内存空间中
-        boolean is = hCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(userId, channelNum, jpeg, jpegBuffer, 1024 * 1024, a);
-        log.debug("-----------这里开始图片存入内存----------" + is);
-
-        Base64.Encoder decoder = Base64.getEncoder();
-        //  BASE64Encoder encoder = new BASE64Encoder();
-        String png_base64 = decoder.encodeToString(jpegBuffer.array());//转换成base64串
-        png_base64 = png_base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\n
-        log.debug("-----------处理完成截图数据----------");
-        return png_base64;
-    }
-
-    /**
-     * @描述 截图 存服务器
-     * @参数 [cameraId, channelNum]
-     * @返回值 java.lang.String
-     * @创建人 刘苏义
-     * @创建时间 2023/2/2 14:59
-     * @修改人和其它信息
-     */
-    @Override
-    @SdkOperate
-    public String picCutCate(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChanNo();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return "";
-        }
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        //图片信息
-        NET_DVR_JPEGPARA jpeg = new NET_DVR_JPEGPARA();
-        //设置图片分辨率
-        //图片尺寸:0-CIF(352*288/352*240),1-QCIF(176*144/176*120),2-4CIF(704*576/704*480)或D1(720*576/720*486),3-UXGA(1600*1200),
-        // 4-SVGA(800*600),5-HD720P(1280*720),6-VGA(640*480),7-XVGA(1280*960),8-HD900P(1600*900),9-HD1080P(1920*1080),10-2560*1920,
-        // 11-1600*304,12-2048*1536,13-2448*2048,14-2448*1200,15-2448*800,16-XGA(1024*768),17-SXGA(1280*1024),18-WD1(960*576/960*480),
-        // 19-1080I(1920*1080),20-576*576,21-1536*1536,22-1920*1920,23-320*240,24-720*720,25-1024*768,26-1280*1280,27-1600*600,
-        // 28-2048*768,29-160*120,75-336*256,78-384*256,79-384*216,80-320*256,82-320*192,83-512*384,127-480*272,128-512*272, 161-288*320,
-        // 162-144*176,163-480*640,164-240*320,165-120*160,166-576*720,167-720*1280,168-576*960,180-180*240, 181-360*480, 182-540*720,
-        // 183-720*960, 184-960*1280, 185-1080*1440, 500-384*288, 0xff-Auto(使用当前码流分辨率)
-        jpeg.wPicSize = 0;
-        //设置图片质量:0-最好,1-较好,2-一般
-        jpeg.wPicQuality = 0;
-        IntByReference a = new IntByReference();
-        //设置图片大小
-        ByteBuffer jpegBuffer = ByteBuffer.allocate(1024 * 1024);
-        // 抓图到内存,单帧数据捕获并保存成JPEG存放在指定的内存空间中
-        log.debug("-----------这里开始封装 NET_DVR_CaptureJPEGPicture_NEW---------");
-        boolean is = hCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(userId, channelNum, jpeg, jpegBuffer, 1024 * 1024, a);
-        log.debug("-----------这里开始图片存入内存----------" + is);
-        if (is) {
-            log.debug("hksdk(抓图)-结果状态值(0表示成功):" + hCNetSDK.NET_DVR_GetLastError());
-            byte[] array = jpegBuffer.array();
-            //存储到minio
-            String BucketName = "pic";
-            String ObjectName = "capture/" + IdUtils.simpleUUID() + ".jpeg";
-            InputStream input = new ByteArrayInputStream(array);
-            String url = "";
-            try {
-                boolean b = MinioUtil.uploadObject(BucketName, ObjectName, input, input.available(), MimeTypeUtils.IMAGE_JPEG);
-                if (b) {
-                    url = MinioUtil.getBucketObjectUrl(BucketName, ObjectName);
-                    log.debug("上传文件成功!" + url);
-                }
-            } catch (IOException ex) {
-                log.error("上传文件异常:" + ex.getMessage());
-            }
-            return url;
-        } else {
-            int code = hCNetSDK.NET_DVR_GetLastError();
-            log.error("抓图失败,请稍后重试" + code);
-            return "";
-        }
-    }
-
-    /**
-     * @描述 短时录像
-     * @参数 [userId, channelNum, enable]
-     * @返回值 void
-     * @创建人 刘苏义
-     * @创建时间 2023/1/20 11:18
-     * @修改人和其它信息
-     */
-    @Override
-    public String record(CameraCmd cmd) {
-        try {
-            String cameraId = cmd.getCameraId();
-            Integer channelNum = cmd.getChanNo();
-            String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
-            boolean enable = cmd.isEnable();
-            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-                return "";
-            }
-            Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-            //强制I帧结构体对象
-            HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME();   //新建结构体对象
-            netDvrIFrame.read();
-            netDvrIFrame.dwChannel = channelNum;//因为上文代码中设置了通道号,按照上文中的设置
-            netDvrIFrame.byStreamType = 0;
-            netDvrIFrame.dwSize = netDvrIFrame.size();
-            netDvrIFrame.write();
-            if (!hCNetSDK.NET_DVR_RemoteControl(userId, 3402, netDvrIFrame.getPointer(), netDvrIFrame.dwSize)) {
-                log.error("强制I帧 错误码为:  " + hCNetSDK.NET_DVR_GetLastError());
-            }
-            //预览参数
-            NET_DVR_PREVIEWINFO previewinfo = new NET_DVR_PREVIEWINFO();
-            previewinfo.read();
-            previewinfo.lChannel = channelNum;
-            previewinfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-三码流,3-虚拟码流,以此类推
-            previewinfo.dwLinkMode = 0;//连接方式:0-TCP方式,1-UDP方式,2-多播方式,3-RTP方式,4-RTP/RTSP,5-RTP/HTTP,6-HRUDP(可靠传输),7-RTSP/HTTPS,8-NPQ
-            previewinfo.hPlayWnd = null;//播放窗口的句柄,为NULL表示不解码显示。
-            previewinfo.bBlocked = 0;//0- 非阻塞取流,1-阻塞取流
-            previewinfo.byNPQMode = 0;//NPQ模式:0-直连模式,1-过流媒体模式
-            previewinfo.write();
-            String url = "";
-            if (enable) {
-                if (!GlobalVariable.previewMap.containsKey(cameraId)) {
-                    int lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(userId, previewinfo, null, null);
-                    if (lRealHandle == -1) {
-                        log.error("取流失败" + hCNetSDK.NET_DVR_GetLastError());
-                        return "";
-                    }
-                    log.debug("取流成功");
-                    GlobalVariable.previewMap.put(cameraId, lRealHandle);
-                }
-                if (!hCNetSDK.NET_DVR_SaveRealData_V30(GlobalVariable.previewMap.get(cameraId), 2, path)) {
-                    log.error("保存视频文件到临时文件夹失败 错误码为:  " + hCNetSDK.NET_DVR_GetLastError());
-                    return "";
-                }
-                log.debug("录像开始");
-            } else {
-                if (GlobalVariable.previewMap.containsKey(cameraId)) {
-                    Integer lRealHandle = GlobalVariable.previewMap.get(cameraId);
-                    hCNetSDK.NET_DVR_StopRealPlay(lRealHandle);
-                    GlobalVariable.previewMap.remove(cameraId);
-                }
-                log.debug("录像停止");
-            }
-            return url;
-        } catch (Exception ex) {
-            log.error("录像异常" + ex.getMessage());
-            return "";
-        }
-    }
-
-    @Override
-    public void recordStart(CameraCmd cmd) {
-        try {
-            String cameraId = cmd.getCameraId();
-            Integer channelNum = cmd.getChanNo();
-            String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
-            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-                return;
-            }
-            Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-            //强制I帧结构体对象
-            HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME();   //新建结构体对象
-            netDvrIFrame.read();
-            netDvrIFrame.dwChannel = channelNum;//因为上文代码中设置了通道号,按照上文中的设置
-            netDvrIFrame.byStreamType = 0;
-            netDvrIFrame.dwSize = netDvrIFrame.size();
-            netDvrIFrame.write();
-            if (!hCNetSDK.NET_DVR_RemoteControl(userId, 3402, netDvrIFrame.getPointer(), netDvrIFrame.dwSize)) {
-                log.error("强制I帧 错误码为:  " + hCNetSDK.NET_DVR_GetLastError());
-            }
-            //预览参数
-            NET_DVR_PREVIEWINFO previewinfo = new NET_DVR_PREVIEWINFO();
-            previewinfo.read();
-            previewinfo.lChannel = channelNum;
-            previewinfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-三码流,3-虚拟码流,以此类推
-            previewinfo.dwLinkMode = 0;//连接方式:0-TCP方式,1-UDP方式,2-多播方式,3-RTP方式,4-RTP/RTSP,5-RTP/HTTP,6-HRUDP(可靠传输),7-RTSP/HTTPS,8-NPQ
-            previewinfo.hPlayWnd = null;//播放窗口的句柄,为NULL表示不解码显示。
-            previewinfo.bBlocked = 0;//0- 非阻塞取流,1-阻塞取流
-            previewinfo.byNPQMode = 0;//NPQ模式:0-直连模式,1-过流媒体模式
-            previewinfo.write();
-            if (GlobalVariable.previewMap.containsKey(cameraId)) {
-                Integer lRealHandle = GlobalVariable.previewMap.get(cameraId);
-                hCNetSDK.NET_DVR_StopRealPlay(lRealHandle);
-                GlobalVariable.previewMap.remove(cameraId);
-                log.debug("停止当前录像");
-            }
-            int lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(userId, previewinfo, null, null);
-            if (lRealHandle == -1) {
-                log.error("取流失败" + hCNetSDK.NET_DVR_GetLastError());
-                return;
-            }
-            log.debug("取流成功");
-            GlobalVariable.threadMap.put(cameraId, Thread.currentThread().getName());
-            GlobalVariable.previewMap.put(cameraId, lRealHandle);
-            if (!hCNetSDK.NET_DVR_SaveRealData_V30(GlobalVariable.previewMap.get(cameraId), 2, path)) {
-                log.error("保存视频文件到临时文件夹失败 错误码为:  " + hCNetSDK.NET_DVR_GetLastError());
-                return;
-            }
-            log.debug("录像开始");
-        } catch (Exception ex) {
-            log.error("开始录像异常" + ex.getMessage());
-        }
-    }
-
-    @Override
-    public String recordStopToMinio(CameraCmd cmd) {
-        String url = "";
-        try {
-            String cameraId = cmd.getCameraId();
-            Integer channelNum = cmd.getChanNo();
-            String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
-            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-                return "";
-            }
-            Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-            //region 强制I帧
-            HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME();   //新建结构体对象
-            netDvrIFrame.read();
-            netDvrIFrame.dwChannel = channelNum;//因为上文代码中设置了通道号,按照上文中的设置
-            netDvrIFrame.byStreamType = 0;
-            netDvrIFrame.dwSize = netDvrIFrame.size();
-            netDvrIFrame.write();
-            if (!hCNetSDK.NET_DVR_RemoteControl(userId, 3402, netDvrIFrame.getPointer(), netDvrIFrame.dwSize)) {
-                log.error("强制I帧 错误码为:  " + hCNetSDK.NET_DVR_GetLastError());
-            }
-            //endregion
-            //region 预览参数
-            NET_DVR_PREVIEWINFO previewinfo = new NET_DVR_PREVIEWINFO();
-            previewinfo.read();
-            previewinfo.lChannel = channelNum;
-            previewinfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-三码流,3-虚拟码流,以此类推
-            previewinfo.dwLinkMode = 0;//连接方式:0-TCP方式,1-UDP方式,2-多播方式,3-RTP方式,4-RTP/RTSP,5-RTP/HTTP,6-HRUDP(可靠传输),7-RTSP/HTTPS,8-NPQ
-            previewinfo.hPlayWnd = null;//播放窗口的句柄,为NULL表示不解码显示。
-            previewinfo.bBlocked = 0;//0- 非阻塞取流,1-阻塞取流
-            previewinfo.byNPQMode = 0;//NPQ模式:0-直连模式,1-过流媒体模式
-            previewinfo.write();
-            //endregion
-            if (GlobalVariable.previewMap.containsKey(cameraId)) {
-                Integer lRealHandle = GlobalVariable.previewMap.get(cameraId);
-                hCNetSDK.NET_DVR_StopRealPlay(lRealHandle);
-                GlobalVariable.previewMap.remove(cameraId);
-            }
-            log.debug("录像停止");
-            //存入minio
-            String BucketName = cmd.getRecordBucketName();
-            String ObjectName = cmd.getRecordObjectName() + ".mp4";
-            FileInputStream stream = new FileInputStream(path);
-            boolean b = MinioUtil.uploadObject(BucketName, ObjectName, stream, stream.available(), "video/MP4");
-            if (b) {
-                url = MinioUtil.getBucketObjectUrl(BucketName, ObjectName);
-                log.debug("上传文件成功!" + url);
-            }
-            return url;
-        } catch (Exception ex) {
-            log.error("录像异常" + ex.getMessage());
-            return "";
-        }
-    }
-
-    @Override
-    public void recordStopNotToMinio(CameraCmd cmd) {
-        try {
-            String cameraId = cmd.getCameraId();
-            Integer channelNum = cmd.getChanNo();
-            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-                return;
-            }
-            Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-            //强制I帧结构体对象
-            HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME();   //新建结构体对象
-            netDvrIFrame.read();
-            netDvrIFrame.dwChannel = channelNum;//因为上文代码中设置了通道号,按照上文中的设置
-            netDvrIFrame.byStreamType = 0;
-            netDvrIFrame.dwSize = netDvrIFrame.size();
-            netDvrIFrame.write();
-            if (!hCNetSDK.NET_DVR_RemoteControl(userId, 3402, netDvrIFrame.getPointer(), netDvrIFrame.dwSize)) {
-                log.error("强制I帧 错误码为:  " + hCNetSDK.NET_DVR_GetLastError());
-            }
-            //预览参数
-            NET_DVR_PREVIEWINFO previewinfo = new NET_DVR_PREVIEWINFO();
-            previewinfo.read();
-            previewinfo.lChannel = channelNum;
-            previewinfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-三码流,3-虚拟码流,以此类推
-            previewinfo.dwLinkMode = 0;//连接方式:0-TCP方式,1-UDP方式,2-多播方式,3-RTP方式,4-RTP/RTSP,5-RTP/HTTP,6-HRUDP(可靠传输),7-RTSP/HTTPS,8-NPQ
-            previewinfo.hPlayWnd = null;//播放窗口的句柄,为NULL表示不解码显示。
-            previewinfo.bBlocked = 0;//0- 非阻塞取流,1-阻塞取流
-            previewinfo.byNPQMode = 0;//NPQ模式:0-直连模式,1-过流媒体模式
-            previewinfo.write();
-            if (GlobalVariable.previewMap.containsKey(cameraId)) {
-                Integer lRealHandle = GlobalVariable.previewMap.get(cameraId);
-                hCNetSDK.NET_DVR_StopRealPlay(lRealHandle);
-                GlobalVariable.previewMap.remove(cameraId);
-            }
-            log.debug("录像停止");
-        } catch (Exception ex) {
-            log.error("录像停止异常" + ex.getMessage());
-        }
-    }
-
-    //获取IP通道
-    @Override
-    public List<ArdChannel> getCameraChannelList(ArdCameras camera) {
-        /*获取通道*/
-        List<ArdChannel> channelList = new ArrayList<>();
-        try {
-            Integer chanNum = camera.getChanNum();
-            Integer startDChan = camera.getStartDChan();
-            if (chanNum > 0) {
-                // 获取通道号
-                for (int iChannum = 0; iChannum < chanNum; iChannum++) {
-                    ArdChannel ardChannel = new ArdChannel();
-                    int channum = iChannum + startDChan + 1;
-                    HCNetSDK.NET_DVR_PICCFG_V40 strPicCfg = new HCNetSDK.NET_DVR_PICCFG_V40();
-                    strPicCfg.dwSize = strPicCfg.size();
-                    strPicCfg.write();
-                    Pointer pStrPicCfg = strPicCfg.getPointer();
-                    NativeLong lChannel = new NativeLong(channum);
-                    IntByReference pInt = new IntByReference(0);
-                    boolean b_GetPicCfg = hCNetSDK.NET_DVR_GetDVRConfig(camera.getLoginId(), HCNetSDK.NET_DVR_GET_PICCFG_V40, lChannel.intValue(),
-                            pStrPicCfg, strPicCfg.size(), pInt);
-                    if (b_GetPicCfg) {
-                        strPicCfg.read();
-                        String channelName = new String(strPicCfg.sChanName, "GBK").trim();
-                        ardChannel.setName(channelName);
-                    }
-                    ardChannel.setDeviceId(camera.getId());
-                    ardChannel.setChanNo(iChannum + 1);
-                    channelList.add(ardChannel);
-                }
-            }
-        } catch (Exception ex) {
-            log.error("获取相机通道异常:" + ex.getMessage());
-        }
-        return channelList;
-    }
-
-    /**
-     * @描述 获取GIS信息数据
-     * @参数 [userId, channelNum]
-     * @返回值 boolean
-     * @创建人 刘苏义
-     * @创建时间 2023/1/17 16:36
-     * @修改人和其它信息 0-解锁 1-锁定
-     */
-    @Override
-    public Map<String, Object> getGisInfo(CameraCmd cmd) {
-        String cameraId = cmd.getCameraId();
-        Integer channelNum = cmd.getChanNo();
-        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
-            return new HashMap<>();
-        }
-        // 获取参数
-        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
-        HCNetSDK.NET_DVR_STD_CONFIG struStdCfg = new HCNetSDK.NET_DVR_STD_CONFIG();
-        HCNetSDK.NET_DVR_GIS_INFO struGisInfo = new HCNetSDK.NET_DVR_GIS_INFO();
-        struStdCfg.read();
-        IntByReference lchannel = new IntByReference(channelNum);
-        struStdCfg.lpCondBuffer = lchannel.getPointer();
-        struStdCfg.dwCondSize = 4;
-        struStdCfg.lpOutBuffer = struGisInfo.getPointer();
-        struStdCfg.dwOutSize = struGisInfo.size();
-        struStdCfg.write();//设置前之前要write()
-        boolean bool = hCNetSDK.NET_DVR_GetSTDConfig(userId, NET_DVR_GET_GISINFO, struStdCfg);
-        if (!bool) {
-            int code = hCNetSDK.NET_DVR_GetLastError();
-            log.error("获取GIS信息数据失败,请稍后重试" + code);
-            return new HashMap<>();
-        } else {
-            struGisInfo.read();
-            Map<String, Object> map = new HashMap<>();
-            map.put("p", struGisInfo.struPtzPos.fPanPos);
-            map.put("t", struGisInfo.struPtzPos.fTiltPos < 0 ? struGisInfo.struPtzPos.fTiltPos + 360 : struGisInfo.struPtzPos.fTiltPos);
-            map.put("z", struGisInfo.struPtzPos.fZoomPos);
-            map.put("fHorFieldAngle", struGisInfo.fHorizontalValue);// 水平视场角
-            map.put("fVerFieldAngle", struGisInfo.fVerticalValue);// 垂直视场角
-            return map;
-        }
-    }
+package com.ruoyi.device.hiksdk.service.impl;
+
+import com.ruoyi.alarm.global.domain.GuidePriorityQueue;
+import com.ruoyi.alarm.global.domain.GuideTask;
+import com.ruoyi.common.annotation.SdkOperate;
+import com.ruoyi.common.utils.file.FileUtils;
+import com.ruoyi.common.utils.file.MimeTypeUtils;
+import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.device.camera.domain.CameraCmd;
+import com.ruoyi.device.camera.service.IArdCamerasService;
+import com.ruoyi.device.channel.domain.ArdChannel;
+import com.ruoyi.device.channel.service.IArdChannelService;
+import com.ruoyi.device.hiksdk.common.GlobalVariable;
+import com.ruoyi.device.camera.domain.ArdCameras;
+import com.ruoyi.media.domain.Vtdu;
+import com.ruoyi.media.service.IVtduService;
+import com.ruoyi.utils.gis.GisUtil;
+import com.ruoyi.device.hiksdk.sdk.HCNetSDK;
+import com.ruoyi.device.hiksdk.service.IHikClientService;
+import com.ruoyi.device.hiksdk.sdk.LoginResultCallBack;
+import com.ruoyi.utils.minio.MinioUtil;
+import com.sun.jna.Native;
+import com.sun.jna.NativeLong;
+import com.sun.jna.Platform;
+import com.sun.jna.Pointer;
+import com.sun.jna.ptr.IntByReference;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.Base64;
+import javax.annotation.Resource;
+import java.io.*;
+import java.math.BigDecimal;
+import java.nio.ByteBuffer;
+import java.text.DecimalFormat;
+import java.util.*;
+import java.util.concurrent.PriorityBlockingQueue;
+
+import static com.ruoyi.device.hiksdk.sdk.HCNetSDK.*;
+
+/**
+ * @ClassName: hikClientServiceImpl
+ * @Description: 海康操作客户端实现类
+ * @Author: Administrator
+ * @Date: 2023年01月17日 11:25
+ * @Version: 1.2
+ **/
+@Slf4j(topic = "hikSdk")
+@Service
+public class HikClientServiceImpl implements IHikClientService {
+
+    @Resource
+    private IArdCamerasService ardCamerasService;
+    @Resource
+    private IArdChannelService ardChannelService;
+    @Resource
+    private IVtduService vtduService;
+
+    private static HCNetSDK hCNetSDK;
+
+    @Override
+    public void loadHCNetSDKLib() {
+        try {
+            log.debug("开始加载sdk库文件路径");
+            if (Platform.isWindows()) {
+                String WIN_PATH = System.getProperty("user.dir") + File.separator + "lib\\hikDll\\HCNetSDK.dll";
+                log.debug("当前Windows平台的sdk库路径:" + WIN_PATH);
+                hCNetSDK = (HCNetSDK) Native.loadLibrary(WIN_PATH, HCNetSDK.class);
+            } else {
+                log.debug("Linux平台");
+                String LINUX_PATH = System.getProperty("user.dir") + File.separator + "hiklib" + File.separator + "libhcnetsdk.so";
+                log.debug("当前Linux平台的sdk库路径:" + LINUX_PATH);
+                hCNetSDK = (HCNetSDK) Native.loadLibrary(LINUX_PATH, HCNetSDK.class);
+
+                //设置HCNetSDKCom组件库所在路径
+                //libhcnetsdk.so
+                String strPathCom = "/home/hiklib";
+                NET_DVR_LOCAL_SDK_PATH struComPath = new NET_DVR_LOCAL_SDK_PATH();
+                System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length());
+                struComPath.write();
+                hCNetSDK.NET_DVR_SetSDKInitCfg(2, struComPath.getPointer());
+
+                //设置libcrypto.so所在路径
+                BYTE_ARRAY ptrByteArrayCrypto = new BYTE_ARRAY(256);
+                String strPathCrypto = "/home/hiklib/libcrypto.so.1.1";
+                System.arraycopy(strPathCrypto.getBytes(), 0, ptrByteArrayCrypto.byValue, 0, strPathCrypto.length());
+                ptrByteArrayCrypto.write();
+                hCNetSDK.NET_DVR_SetSDKInitCfg(3, ptrByteArrayCrypto.getPointer());
+
+                //设置libssl.so所在路径
+                BYTE_ARRAY ptrByteArraySsl = new BYTE_ARRAY(256);
+                String strPathSsl = "/home/hiklib/libssl.so.1.1";
+                System.arraycopy(strPathSsl.getBytes(), 0, ptrByteArraySsl.byValue, 0, strPathSsl.length());
+                ptrByteArraySsl.write();
+                hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArraySsl.getPointer());
+            }
+        } catch (Exception ex) {
+            log.error("加载库文件异常:" + ex.getMessage());
+        }
+    }
+
+    @Override
+    /**
+     * @描述 注册登录 只支持同步登陆,且官方不建议直接在此接口下写耗时操作
+     * @参数 [dvrLogin]
+     * @返回值 java.lang.Integer
+     * @创建人 刘苏义
+     * @创建时间 2023/1/17 16:12
+     * @修改人和其它信息
+     */
+    public void syncLogin(ArdCameras camera) {
+        // 初始化
+        if (!hCNetSDK.NET_DVR_Init()) {
+            log.error("SDK初始化失败");
+        }
+        //打印海康sdk日志
+        if (Platform.isWindows()) {
+            String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
+            hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
+        } else {
+            hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
+        }
+        String m_sDeviceIP = camera.getIp();
+        String m_sUsername = camera.getUsername();
+        String m_sPassword = camera.getPassword();
+        short m_sPort = camera.getPort().shortValue();
+        //设置连接时间与重连时间
+        hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
+        hCNetSDK.NET_DVR_SetReconnect(100000, true);
+        //设备信息, 输出参数
+        HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
+        HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
+
+        // 注册设备-登录参数,包括设备地址、登录用户、密码等
+        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.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());
+        m_strLoginInfo.wPort = m_sPort;
+        m_strLoginInfo.byVerifyMode = 0;
+        m_strLoginInfo.byLoginMode = 0;
+        //是否异步登录:0- 否,1- 是  windowsSDK里是true和false
+        m_strLoginInfo.bUseAsynLogin = false;
+        m_strLoginInfo.write();
+        //同步登录
+        int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
+        if (lUserID < 0) {
+            int errorCode = hCNetSDK.NET_DVR_GetLastError();
+            log.error("登录异常:" + errorCode);
+
+            log.debug(camera.getIp() + ":" + camera.getPort() + "登录失败");
+            camera.setChanNum(0);
+            camera.setLoginId(-1);
+            camera.setState("0");
+        } else {
+
+            if (GlobalVariable.loginMap.containsKey(camera.getId())) {
+                GlobalVariable.loginMap.remove(camera.getId());
+            }
+            //删除管理通道
+            ardChannelService.deleteArdChannelByDeviceId(camera.getId());
+            GlobalVariable.loginMap.put(camera.getId(), lUserID);
+            log.debug(camera.getIp() + ":" + camera.getPort() + "登录成功");
+
+            camera.setLoginId(lUserID);
+            camera.setState("1");
+            camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum);
+            camera.setStartDChan((int) m_strDeviceInfo.struDeviceV30.byStartDChan);
+            //获取最新通道
+            List<ArdChannel> cameraChannelList = getCameraChannelList(camera);
+            if (cameraChannelList.size() > 0) {
+                for (ArdChannel channel : cameraChannelList) {
+                    channel.setId(IdUtils.simpleUUID());
+                    ardChannelService.insertArdChannel(channel);
+                }
+                //添加到流媒体
+                for (ArdChannel channel : cameraChannelList) {
+                    String name = camera.getId() + "_" + channel.getChanNo();
+                    String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/h264/ch" + channel.getChanNo() + "/main/av_stream";
+                    Vtdu vtdu = vtduService.selectVtduByName(name);
+                    if (vtdu == null) {
+                        //添加到流媒体
+                        vtdu = new Vtdu();
+                        vtdu.setRtspSource(rtspSource);
+                        vtdu.setName(camera.getId() + "_" + channel.getChanNo());
+                        vtdu.setIsCode("0");//默认不转码
+                        vtdu.setMode("1");//默认CPU软解码
+                        vtdu.setCameraId(camera.getId());
+                        vtduService.insertVtdu(vtdu);
+                    } else {
+                        if (!rtspSource.equals(vtdu.getRtspSource())) {
+                            //更新rtsp地址
+                            vtdu.setRtspSource(rtspSource);
+                            vtduService.updateVtdu(vtdu);
+                        }
+                    }
+                }
+            }
+            //创建引导队列
+            if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
+                Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
+                PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator);
+                GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
+            }
+            ardCamerasService.updateArdCameras(camera);
+        }
+    }
+
+    /**
+     * @描述 注册登录 集成于NET_DVR_Login_V30,支持同步和异步登录
+     * @参数 [dvrLogin]
+     * @返回值 java.lang.Integer
+     * @创建人 刘苏义
+     * @创建时间 2023/1/17 16:12
+     * @修改人和其它信息
+     */
+    @Override
+    public void asyncLogin(ArdCameras camera) {
+        // 初始化
+        if (!hCNetSDK.NET_DVR_Init()) {
+            log.error("SDK初始化失败");
+        }
+        //打印海康sdk日志
+        if (Platform.isWindows()) {
+            String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
+            hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
+        } else {
+            hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
+        }
+        String m_sDeviceIP = camera.getIp();
+        String m_sUsername = camera.getUsername();
+        String m_sPassword = camera.getPassword();
+        short m_sPort = camera.getPort().shortValue();
+        //设置连接时间与重连时间
+        hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
+        hCNetSDK.NET_DVR_SetReconnect(100000, true);
+        //设备信息, 输出参数
+        HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
+        HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
+
+        // 注册设备-登录参数,包括设备地址、登录用户、密码等
+        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.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());
+        m_strLoginInfo.wPort = m_sPort;
+        m_strLoginInfo.byVerifyMode = 0;
+        m_strLoginInfo.byLoginMode = 0;
+        //是否异步登录:0- 否,1- 是  windowsSDK里是true和false
+        m_strLoginInfo.bUseAsynLogin = true;
+        //异步登录回调
+        m_strLoginInfo.cbLoginResult = new LoginResultCallBack(camera);
+        m_strLoginInfo.write();
+        int i = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
+        if (i < 0) {
+            int errorCode = hCNetSDK.NET_DVR_GetLastError();
+            log.error("登录异常:" + errorCode);
+        }
+
+    }
+
+    /**
+     * @描述 登录所有相机
+     * @参数 []
+     * @返回值 void
+     * @创建人 刘苏义
+     * @创建时间 2023/2/3 10:10
+     * @修改人和其它信息
+     */
+    @Override
+    public void loginAll() {
+        try {
+            log.debug("加载lib完成!");
+            ArdCameras ardCamera = new ArdCameras();
+            ardCamera.setFactory("1");
+            List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(ardCamera);
+            for (ArdCameras camera : ardCameras) {
+                Thread.sleep(500);
+                //异步登录
+                asyncLogin(camera);
+            }
+        } catch (Exception ex) {
+            log.error("初始化登录相机异常:" + ex.getMessage());
+        }
+    }
+
+    /**
+     * @描述 注销登录
+     * @参数 [dvrLogin]
+     * @返回值 java.lang.Integer
+     * @创建人 刘苏义
+     * @创建时间 2023/1/17 16:12
+     * @修改人和其它信息
+     */
+    @Override
+    public boolean logout(String cameraId) {
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return false;
+        }
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        boolean b = hCNetSDK.NET_DVR_Logout(userId);
+        if (b) {
+            GlobalVariable.loginMap.remove(cameraId);
+        }
+        return b;
+    }
+
+    /**
+     * 是否在线
+     *
+     * @param cmd 相机命令
+     */
+    @Override
+    public boolean isOnLine(CameraCmd cmd) {
+        try {
+            String cameraId = cmd.getCameraId();
+            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+                return false;
+            }
+            Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+            return hCNetSDK.NET_DVR_RemoteControl(userId, NET_DVR_CHECK_USER_STATUS, null, 0);
+        } catch (Exception ex) {
+            log.error("检测在线异常:" + ex.getMessage());
+            return false;
+        }
+    }
+
+    /**
+     * @描述 带速度的云台控制操作
+     * Code:1-左上 2-上 3-右上 4-左 5-巡航 6-右 7-左下 8-下 9-右下 10-焦距变大 11-焦距变小
+     * 12-焦点前调 13-焦点后调 14-光圈扩大 15-光圈缩小 16-雨刷开启
+     * @参数 [userId, channelNum, speed]
+     * @返回值 boolean
+     * @创建人 刘苏义
+     * @创建时间 2023/1/17 16:14
+     * @修改人和其它信息
+     */
+    @Override
+    @SdkOperate
+    public boolean pTZControlWithSpeed(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        boolean enable = cmd.isEnable();
+        Integer channelNum = cmd.getChanNo();
+        Integer speed = cmd.getSpeed();
+        Integer code = cmd.getCode();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return false;
+        }
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        int dwStop;
+        if (enable) {
+            dwStop = 0;//开启
+        } else {
+            dwStop = 1;//关闭
+        }
+        int dwPTZCommand = -1;
+        switch (code) {
+            /*方向*/
+            case 1:
+                dwPTZCommand = HCNetSDK.UP_LEFT;
+                break;
+            case 2:
+                dwPTZCommand = HCNetSDK.TILT_UP;
+                break;
+            case 3:
+                dwPTZCommand = HCNetSDK.UP_RIGHT;
+                break;
+            case 4:
+                dwPTZCommand = HCNetSDK.PAN_LEFT;
+                break;
+            case 5:
+                dwPTZCommand = HCNetSDK.RUN_SEQ;
+                break;
+            case 6:
+                dwPTZCommand = HCNetSDK.PAN_RIGHT;
+                break;
+            case 7:
+                dwPTZCommand = HCNetSDK.DOWN_LEFT;
+                break;
+            case 8:
+                dwPTZCommand = HCNetSDK.TILT_DOWN;
+                break;
+            case 9:
+                dwPTZCommand = HCNetSDK.DOWN_RIGHT;
+                break;
+            /*焦距*/
+            case 10:
+                dwPTZCommand = HCNetSDK.ZOOM_IN;
+                break;
+            case 11:
+                dwPTZCommand = HCNetSDK.ZOOM_OUT;
+                break;
+            /*焦点*/
+            case 12:
+                dwPTZCommand = HCNetSDK.FOCUS_NEAR;
+                break;
+            case 13:
+                dwPTZCommand = HCNetSDK.FOCUS_FAR;
+                break;
+            /*光圈*/
+            case 14:
+                dwPTZCommand = HCNetSDK.IRIS_OPEN;
+                break;
+            case 15:
+                dwPTZCommand = HCNetSDK.IRIS_CLOSE;
+                break;
+            /*雨刷*/
+            case 16:
+                dwPTZCommand = HCNetSDK.WIPER_PWRON;
+                break;
+        }
+        boolean bool = hCNetSDK.NET_DVR_PTZControlWithSpeed_Other(userId, channelNum, dwPTZCommand, dwStop, speed);
+        if (!bool) {
+            int errorCode = hCNetSDK.NET_DVR_GetLastError();
+            log.error("控制失败,请稍后重试" + errorCode);
+        }
+        return bool;
+    }
+
+    /**
+     * 设置聚焦值
+     *
+     * @param cmd 相机命令
+     */
+    @Override
+    @SdkOperate
+    public boolean setFocusPos(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer channelNum = cmd.getChanNo();
+        Integer dwFocusPos = cmd.getDwFocusPos();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return false;
+        }
+        // 获取参数
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        HCNetSDK.NET_DVR_STD_CONFIG struStdCfg = new HCNetSDK.NET_DVR_STD_CONFIG();
+        HCNetSDK.NET_DVR_GIS_INFO struGisInfo = new HCNetSDK.NET_DVR_GIS_INFO();
+        struGisInfo.struPtzPosEx.dwFocus = dwFocusPos;
+        struStdCfg.read();
+        IntByReference lchannel = new IntByReference(channelNum);
+        struStdCfg.lpInBuffer = struGisInfo.getPointer();
+        struStdCfg.lpCondBuffer = lchannel.getPointer();
+        struStdCfg.dwCondSize = 4;
+        struStdCfg.dwInSize = struGisInfo.size();
+        struStdCfg.write();//设置前之前要write()
+        boolean bool = hCNetSDK.NET_DVR_SetSTDConfig(userId, NET_DVR_GET_GISINFO, struStdCfg);
+        if (!bool) {
+            int code = hCNetSDK.NET_DVR_GetLastError();
+            log.error("设置GIS信息数据失败,请稍后重试" + code);
+            return false;
+        } else {
+            return true;
+        }
+    }
+
+    /**
+     * 获取聚焦值
+     *
+     * @param cmd 相机命令
+     */
+    @Override
+    public Map<String, Object> getFocusPos(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer channelNum = cmd.getChanNo();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return new HashMap<>();
+        }
+        // 获取参数
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        HCNetSDK.NET_DVR_STD_CONFIG struStdCfg = new HCNetSDK.NET_DVR_STD_CONFIG();
+        HCNetSDK.NET_DVR_GIS_INFO struGisInfo = new HCNetSDK.NET_DVR_GIS_INFO();
+        struStdCfg.read();
+        IntByReference lchannel = new IntByReference(channelNum);
+        struStdCfg.lpCondBuffer = lchannel.getPointer();
+        struStdCfg.dwCondSize = 4;
+        struStdCfg.lpOutBuffer = struGisInfo.getPointer();
+        struStdCfg.dwOutSize = struGisInfo.size();
+        struStdCfg.write();//设置前之前要write()
+        boolean bool = hCNetSDK.NET_DVR_GetSTDConfig(userId, NET_DVR_GET_GISINFO, struStdCfg);
+        if (!bool) {
+            int code = hCNetSDK.NET_DVR_GetLastError();
+            log.error("获取GIS信息数据失败,请稍后重试" + code);
+            return new HashMap<>();
+        } else {
+            struGisInfo.read();
+            Map<String, Object> map = new HashMap<>();
+            map.put("dwFocus", struGisInfo.struPtzPosEx.dwFocus);
+            return map;
+        }
+    }
+
+    /**
+     * 设置预置点
+     *
+     * @param cmd 相机命令
+     */
+    @Override
+    @SdkOperate
+    public boolean setPreset(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer channelNum = cmd.getChanNo();
+        Integer PresetIndex = cmd.getPresetIndex();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return false;
+        }
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, SET_PRESET, PresetIndex);
+        if (!bool) {
+            int code = hCNetSDK.NET_DVR_GetLastError();
+            log.error("预置点设置失败,请稍后重试" + code);
+        }
+        return bool;
+    }
+
+    /**
+     * 转到预置点
+     *
+     * @param cmd 相机命令
+     */
+    @Override
+    @SdkOperate
+    public boolean gotoPreset(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer channelNum = cmd.getChanNo();
+        Integer PresetIndex = cmd.getPresetIndex();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return false;
+        }
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, GOTO_PRESET, PresetIndex);
+        if (!bool) {
+            int code = hCNetSDK.NET_DVR_GetLastError();
+            log.error("预置点设置失败,请稍后重试" + code);
+        }
+        return bool;
+    }
+
+    /**
+     * @描述 获取通道压缩参数
+     * @参数 [cameraId, channelNum]
+     * @返回值 java.lang.String
+     * @创建人 刘苏义
+     * @创建时间 2023/2/3 8:36
+     * @修改人和其它信息
+     */
+    @Override
+    public Map<String, String> getVideoCompressionCfg(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer chanNo = cmd.getChanNo();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return null;
+        }
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+
+        Map<String, String> map = new HashMap<>();
+        NET_DVR_COMPRESSIONCFG_V30 compressioncfg = new NET_DVR_COMPRESSIONCFG_V30();
+        compressioncfg.write();
+        Pointer pioint = compressioncfg.getPointer();
+        IntByReference ibrBytesReturned = new IntByReference(0);
+        try {
+            boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_COMPRESSCFG_V30, chanNo, pioint, compressioncfg.size(), ibrBytesReturned);
+            if (bool) {
+                compressioncfg.read();
+                //码流类型:0-视频流,1-复合流,0xfe- 自动(和源一致)
+                String streamType = "";
+                switch (compressioncfg.struNormHighRecordPara.byStreamType) {
+                    case 0:
+                        streamType = "视频流";
+                        break;
+                    case 1:
+                        streamType = "复合流";
+                        break;
+                    default:
+                        streamType = "未知";
+                        break;
+                }
+                //视频编码类型:0-私有264,1-标准h264,2-标准mpeg4,7-M-JPEG,8-MPEG2,9-SVAC,10-标准h265,0xfe- 自动(和源一致),0xff-无效
+                String videoEncType = "";
+                switch (compressioncfg.struNormHighRecordPara.byVideoEncType) {
+                    case 0:
+                        videoEncType = "私有264";
+                        break;
+                    case 1:
+                        videoEncType = "标准h264";
+                        break;
+                    case 2:
+                        videoEncType = "标准mpeg4";
+                        break;
+                    case 7:
+                        videoEncType = "M-JPEG";
+                        break;
+                    case 8:
+                        videoEncType = "MPEG2";
+                        break;
+                    case 9:
+                        videoEncType = "SVAC";
+                        break;
+                    case 10:
+                        videoEncType = "标准h265";
+                        break;
+                    default:
+                        videoEncType = "未知";
+                        break;
+                }
+                //视频码率
+                String videoBitrate = "";
+                switch (compressioncfg.struNormHighRecordPara.dwVideoBitrate) {
+                    case 0:
+                        videoBitrate = "保留";
+                        break;
+                    case 1:
+                        videoBitrate = "16K(保留)";
+                        break;
+                    case 2:
+                        videoBitrate = "32K";
+                        break;
+                    case 3:
+                        videoBitrate = "48k";
+                        break;
+                    case 4:
+                        videoBitrate = "64k";
+                        break;
+                    case 5:
+                        videoBitrate = "80k";
+                        break;
+                    case 6:
+                        videoBitrate = "96k";
+                        break;
+                    case 7:
+                        videoBitrate = "128k";
+                        break;
+                    case 8:
+                        videoBitrate = "160k";
+                        break;
+                    case 9:
+                        videoBitrate = "192k";
+                        break;
+                    case 10:
+                        videoBitrate = "224k";
+                        break;
+                    case 11:
+                        videoBitrate = "256K";
+                        break;
+                    case 12:
+                        videoBitrate = "320K";
+                        break;
+                    case 13:
+                        videoBitrate = "384K";
+                        break;
+                    case 14:
+                        videoBitrate = "448K";
+                        break;
+                    case 15:
+                        videoBitrate = "512K";
+                        break;
+                    case 16:
+                        videoBitrate = "640K";
+                        break;
+                    case 17:
+                        videoBitrate = "768K";
+                        break;
+                    case 18:
+                        videoBitrate = "896K";
+                        break;
+                    case 19:
+                        videoBitrate = "1024K";
+                        break;
+                    case 20:
+                        videoBitrate = "1280K";
+                        break;
+                    case 21:
+                        videoBitrate = "1536K";
+                        break;
+                    case 22:
+                        videoBitrate = "1792K";
+                        break;
+                    case 23:
+                        videoBitrate = "2048K";
+                        break;
+                    case 24:
+                        videoBitrate = "3072K";
+                        break;
+                    case 25:
+                        videoBitrate = "4096K";
+                        break;
+                    case 26:
+                        videoBitrate = "8192K";
+                        break;
+                    case 27:
+                        videoBitrate = "16384K";
+                        break;
+                    default:
+                        videoBitrate = "其他";
+                        break;
+                }
+                //视频输出口分辨率:0- 1024x768,1- 1280x720,2-1280x1024,3- 1680x1050,4- 1920x1080,5- 3840*2160
+                String resolution = "";
+                switch (compressioncfg.struNormHighRecordPara.byResolution) {
+                    case 0:
+                        resolution = "DCIF(528*384/528*320)";
+                        break;
+                    case 1:
+                        resolution = "CIF(352*288/352*240)";
+                        break;
+                    case 2:
+                        resolution = "QCIF(176*144/176*120)";
+                        break;
+                    case 3:
+                        resolution = "4CIF(704*576/704*480)";
+                        break;
+                    case 4:
+                        resolution = "2CIF(704*288/704*240)";
+                        break;
+                    case 6:
+                        resolution = "QVGA(320*240)";
+                        break;
+                    case 7:
+                        resolution = "QQVGA(160*120)";
+                        break;
+                    case 16:
+                        resolution = "VGA(640*480)";
+                        break;
+                    case 17:
+                        resolution = "UXGA(1600*1200)";
+                        break;
+                    case 18:
+                        resolution = "SVGA(800*600)";
+                        break;
+                    case 19:
+                        resolution = "HD720P(1280*720)";
+                        break;
+                    case 20:
+                        resolution = "XVGA(1280*960)";
+                        break;
+                    case 21:
+                        resolution = "HD900P(1600*900)";
+                        break;
+                    case 22:
+                        resolution = "1360*1024";
+                        break;
+                    case 23:
+                        resolution = "1536*1536";
+                        break;
+                    case 24:
+                        resolution = "1920*1920";
+                        break;
+                    case 27:
+                        resolution = "1920*1080p";
+                        break;
+                    case 28:
+                        resolution = "2560*1920";
+                        break;
+                    case 29:
+                        resolution = "1600*304";
+                        break;
+                    case 30:
+                        resolution = "2048*1536";
+                        break;
+                    default:
+                        resolution = "不在当前分辨率索引,请联系管理员添加";
+                        break;
+                }
+                map.put("resolution", resolution);
+                map.put("videoBitrate", videoBitrate);
+                map.put("videoEncType", videoEncType);
+                map.put("streamType", streamType);
+
+            } else {
+                int code = hCNetSDK.NET_DVR_GetLastError();
+                log.error("控制失败,请稍后重试" + code);
+            }
+        } catch (Exception ex) {
+            log.error(ex.getMessage());
+        }
+        return map;
+    }
+
+    /**
+     * @描述 获取ptz信息
+     * @参数 [userId, channelNum]
+     * @返回值 boolean
+     * @创建人 刘苏义
+     * @创建时间 2023/1/17 16:36
+     * @修改人和其它信息
+     */
+    @Override
+    public Map<String, Object> getPtz(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer channelNum = cmd.getChanNo();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return null;
+        }
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+
+        NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS();
+        Pointer pioint = m_ptzPosCurrent.getPointer();
+        IntByReference ibrBytesReturned = new IntByReference(0);
+        m_ptzPosCurrent.write();
+        boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_PTZPOS, channelNum, pioint, m_ptzPosCurrent.size(), ibrBytesReturned);
+        if (bool) {
+            m_ptzPosCurrent.read();
+            // DecimalFormat df = new DecimalFormat("0.0");//设置保留位数
+            //16进制转Integer后除10,保留小数点1位
+            //实际显示的PTZ值是获取到的十六进制值的十分之一,
+            //如获取的水平参数P的值是0x1750,实际显示的P值为175度;
+            //获取到的垂直参数T的值是0x0789,实际显示的T值为78.9度;
+            //获取到的变倍参数Z的值是0x1100,实际显示的Z值为110倍。
+            BigDecimal b = new BigDecimal((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wPanPos)) / 10);
+            BigDecimal c = new BigDecimal((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wTiltPos)) / 10);
+            BigDecimal d = new BigDecimal((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wZoomPos)) / 10);
+            double p = b.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
+            double t = c.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
+            double z = d.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
+            //log.debug("T垂直参数为: " + p + "P水平参数为: " + t + "Z变倍参数为: " + z);
+            Map<String, Object> ptzMap = new HashMap<>();
+            ptzMap.put("p", p);
+            ptzMap.put("t", t);
+            ptzMap.put("z", z);
+            return ptzMap;
+        } else {
+            int code = hCNetSDK.NET_DVR_GetLastError();
+            log.error("控制失败,请稍后重试" + code);
+            return new HashMap<>();
+        }
+
+    }
+
+    /**
+     * @描述 设置ptz信息
+     * @参数 [userId, channelNum]
+     * @返回值 boolean
+     * @创建人 刘苏义
+     * @创建时间 2023/1/17 16:36
+     * @修改人和其它信息 注意俯仰角度负值需要加上360得到的正值进行设置
+     */
+    @Override
+    @SdkOperate
+    public boolean setPtz(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer channelNum = cmd.getChanNo();
+        Map<String, Double> ptz = cmd.getPtzMap();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return false;
+        }
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS();
+        m_ptzPosCurrent.wAction = 1;
+        try {
+            String p = String.valueOf(ptz.get("p") * 10);
+            String t = String.valueOf(ptz.get("t") * 10);
+            String z = String.valueOf(ptz.get("z") * 10);
+            m_ptzPosCurrent.wPanPos = (short) (Integer.parseInt(p, 16));
+            m_ptzPosCurrent.wTiltPos = (short) (Integer.parseInt(t, 16));
+            m_ptzPosCurrent.wZoomPos = (short) (Integer.parseInt(z, 16));
+            Pointer point = m_ptzPosCurrent.getPointer();
+            m_ptzPosCurrent.write();
+            boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_PTZPOS, channelNum, point, m_ptzPosCurrent.size());
+            if (!bool) {
+                int code = hCNetSDK.NET_DVR_GetLastError();
+                log.error("设置ptz失败,请稍后重试" + code);
+            }
+            return bool;
+        } catch (Exception ex) {
+            log.error(ex.getMessage());
+            return false;
+        }
+    }
+
+    @Override
+    @SdkOperate
+    public boolean guideTargetPosition(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer channelNum = cmd.getChanNo();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return false;
+        }
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS();
+        m_ptzPosCurrent.wAction = 1;
+        try {
+            ArdCameras cameras = ardCamerasService.selectArdCamerasById(cameraId);
+            double[] cameraPositon = new double[]{cameras.getLongitude(), cameras.getLatitude(), cameras.getAltitude()};
+            double[] targetPositions = cmd.getTargetPosition();
+            double[] cameraPTZ = GisUtil.getCameraPTZ(cameraPositon, targetPositions, 20, 150);
+            String p = String.valueOf((int) (cameraPTZ[0] * 10));
+            String t = String.valueOf((int) (cameraPTZ[1] * 10));
+            String z = String.valueOf((int) (cameraPTZ[2] * 10));
+            m_ptzPosCurrent.wPanPos = (short) (Integer.parseInt(p, 16));
+            m_ptzPosCurrent.wTiltPos = (short) (Integer.parseInt(t, 16));
+            m_ptzPosCurrent.wZoomPos = (short) (Integer.parseInt(z, 16));
+            Pointer point = m_ptzPosCurrent.getPointer();
+            m_ptzPosCurrent.write();
+            boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_PTZPOS, channelNum, point, m_ptzPosCurrent.size());
+            if (!bool) {
+                int code = hCNetSDK.NET_DVR_GetLastError();
+                log.error("设置ptz失败,请稍后重试" + code);
+            }
+            return bool;
+        } catch (Exception ex) {
+            log.error("引导异常:" + ex.getMessage());
+            return false;
+        }
+    }
+
+    /**
+     * @描述 操控锁定
+     * @参数 [userId, channelNum]
+     * @返回值 boolean
+     * @创建人 刘苏义
+     * @创建时间 2023/1/17 16:36
+     * @修改人和其它信息 0-解锁 1-锁定
+     */
+    @Override
+    @SdkOperate
+    public boolean controlLock(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();//申请锁的相机
+        ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId);
+        Date now = new Date();
+        now.setTime(now.getTime() + cmd.getExpired() * 1000);
+        ardCameras.setOperatorExpired(now);//设置当前过期时间
+        ardCamerasService.updateArdCameras(ardCameras);
+        return true;
+    }
+
+    /**
+     * @描述 操控解锁
+     * @参数 [userId, channelNum]
+     * @返回值 boolean
+     * @创建人 刘苏义
+     * @创建时间 2023/6/30 15:36
+     * @修改人和其它信息
+     */
+    @Override
+    public boolean controlUnLock(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();//申请解锁的相机
+        String operator = cmd.getOperator();//申请者
+        ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId);
+        if (ardCameras.getOperatorId().equals(operator)) {
+            //如果解锁相机的当前用户是申请者,则清空该相机的过期时间
+            ardCameras.setOperatorExpired(null);
+            int i = ardCamerasService.updateArdCameras(ardCameras);
+            if (i > 0) {
+                log.debug(cameraId + "--解锁成功");
+            }
+        }
+        return true;
+    }
+
+    /**
+     * @描述 获取ptz锁定信息
+     * @参数 [userId, channelNum]
+     * @返回值 boolean
+     * @创建人 刘苏义
+     * @创建时间 2023/1/17 16:36
+     * @修改人和其它信息 0-解锁 1-锁定
+     */
+    @Override
+    public int getPTZLockInfo(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer channelNum = cmd.getChanNo();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return -1;
+        }
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        NET_DVR_PTZ_LOCKCFG netDvrPtzLockcfg = new NET_DVR_PTZ_LOCKCFG();
+        Pointer point = netDvrPtzLockcfg.getPointer();
+        IntByReference ibrBytesReturned = new IntByReference(0);
+        netDvrPtzLockcfg.write();
+        boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_PTZLOCKCFG, channelNum, point, netDvrPtzLockcfg.size(), ibrBytesReturned);
+        if (!bool) {
+            int code = hCNetSDK.NET_DVR_GetLastError();
+            log.error("获取ptz锁定信息失败,请稍后重试" + code);
+            return -1;
+        } else {
+            netDvrPtzLockcfg.read();
+            return netDvrPtzLockcfg.byWorkMode;
+        }
+    }
+
+    /**
+     * @描述 设置零方位角
+     * @参数 [userId, channelNum]
+     * @返回值 boolean
+     * @创建人 刘苏义
+     * @创建时间 2023/1/17 16:36
+     * @修改人和其它信息 注意俯仰角度负值需要加上360得到的正值进行设置
+     */
+    @Override
+    @SdkOperate
+    public boolean setZeroPtz(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer channelNum = cmd.getChanNo();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return false;
+        }
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        NET_DVR_INITIALPOSITIONCTRL initialpositionctrl = new NET_DVR_INITIALPOSITIONCTRL();
+
+        initialpositionctrl.dwSize = initialpositionctrl.size();
+        initialpositionctrl.byWorkMode = 0;
+        initialpositionctrl.dwChan = Short.parseShort(channelNum.toString());
+
+        Pointer point = initialpositionctrl.getPointer();
+        initialpositionctrl.write();
+        boolean bool = hCNetSDK.NET_DVR_RemoteControl(userId, NET_DVR_PTZ_INITIALPOSITIONCTRL, point, initialpositionctrl.size());
+        if (!bool) {
+            int i = hCNetSDK.NET_DVR_GetLastError();
+            log.error("错误码:" + i);
+        }
+        return bool;
+    }
+
+    /**
+     * @描述 获取球机PTZ参数取值范围
+     * @参数 [cameraId, channelNum]
+     * @返回值 java.util.Map<java.lang.String, java.lang.Object>
+     * @创建人 刘苏义
+     * @创建时间 2023/2/8 10:58
+     * @修改人和其它信息
+     */
+    @Override
+    public Map<String, Object> getPtzScope(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer channelNum = cmd.getChanNo();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return new HashMap<>();
+        }
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        NET_DVR_PTZSCOPE m_ptzPosCurrent = new NET_DVR_PTZSCOPE();
+        Pointer point = m_ptzPosCurrent.getPointer();
+        IntByReference ibrBytesReturned = new IntByReference(0);
+        m_ptzPosCurrent.write();
+        boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_PTZSCOPE, channelNum, point, m_ptzPosCurrent.size(), ibrBytesReturned);
+        if (!bool) {
+            int code = hCNetSDK.NET_DVR_GetLastError();
+            log.error("设置ptz失败,请稍后重试" + code);
+            return new HashMap<>();
+        } else {
+            m_ptzPosCurrent.read();
+            DecimalFormat df = new DecimalFormat("0.0");//设置保留位数
+
+            String wPanPosMax = df.format((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wPanPosMax)) / 10);
+            String wPanPosMin = df.format((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wTiltPosMax)) / 10);
+            String wTiltPosMax = df.format((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wTiltPosMax)) / 10);
+            String wTiltPosMin = df.format((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wTiltPosMin)) / 10);
+            String wZoomPosMax = df.format((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wZoomPosMax)) / 10);
+            String wZoomPosMin = df.format((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wZoomPosMin)) / 10);
+            Map<String, Object> ptzScopeMap = new HashMap<>();
+            ptzScopeMap.put("pMax", wPanPosMax);
+            ptzScopeMap.put("pMin", wPanPosMin);
+            ptzScopeMap.put("tMax", wTiltPosMax);
+            ptzScopeMap.put("tMin", wTiltPosMin);
+            ptzScopeMap.put("zMax", wZoomPosMax);
+            ptzScopeMap.put("zMin", wZoomPosMin);
+            return ptzScopeMap;
+        }
+
+    }
+
+    /**
+     * @描述 透雾开关
+     * @参数 [userId, channelNum, enable]
+     * @返回值 boolean
+     * @创建人 刘苏义
+     * @创建时间 2023/1/18 13:07
+     * @修改人和其它信息
+     */
+    @Override
+    @SdkOperate
+    public boolean controlDefogcfg(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        boolean enable = cmd.isEnable();
+        Integer channelNum = cmd.getChanNo();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return false;
+        }
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        NET_DVR_CAMERAPARAMCFG_EX struCameraParam = new NET_DVR_CAMERAPARAMCFG_EX();
+        Pointer point = struCameraParam.getPointer();
+        IntByReference ibrBytesReturned = new IntByReference(0);
+        boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_CCDPARAMCFG_EX, channelNum, point, struCameraParam.size(), ibrBytesReturned);
+        if (!b_GetCameraParam) {
+            log.error("获取前端参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError());
+        }
+        struCameraParam.read();
+        log.debug("是否开启透雾:" + struCameraParam.struDefogCfg.byMode);
+
+        NET_DVR_DEFOGCFG defogcfg = new NET_DVR_DEFOGCFG();
+        if (enable) {
+            defogcfg.byMode = 2;//0-不启用 1-自动模式 2-常开模式
+            defogcfg.byLevel = 100;//取值范围0-100
+        } else {
+            defogcfg.byMode = 0;//0-不启用 1-自动模式 2-常开模式
+        }
+        struCameraParam.struDefogCfg = defogcfg;
+        struCameraParam.write();
+        boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_CCDPARAMCFG_EX, channelNum, point, struCameraParam.size());
+        if (!bool) {
+            int code = hCNetSDK.NET_DVR_GetLastError();
+            log.error("设置透雾失败,请稍后重试" + code);
+        }
+        log.debug("设置透雾成功");
+        return bool;
+    }
+
+    /**
+     * @描述 红外开关
+     * @参数 [userId, channelNum, enable]
+     * @返回值 boolean
+     * @创建人 刘苏义
+     * @创建时间 2023/1/18 13:07
+     * @修改人和其它信息
+     */
+    @Override
+    @SdkOperate
+    public boolean controlInfrarecfg(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        boolean enable = cmd.isEnable();
+        Integer channelNum = cmd.getChanNo();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return false;
+        }
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        NET_DVR_CAMERAPARAMCFG_EX struDayNigh = new NET_DVR_CAMERAPARAMCFG_EX();
+        Pointer point = struDayNigh.getPointer();
+        IntByReference ibrBytesReturned = new IntByReference(0);
+        boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_CCDPARAMCFG_EX, channelNum, point, struDayNigh.size(), ibrBytesReturned);
+        if (!b_GetCameraParam) {
+            log.error("获取前端参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError());
+        }
+        struDayNigh.read();
+        log.debug("是否开启夜视:" + struDayNigh.struDayNight.byDayNightFilterType);
+
+        NET_DVR_DAYNIGHT daynight = new NET_DVR_DAYNIGHT();
+        if (enable) {
+            daynight.byDayNightFilterType = 1;//夜晚
+
+        } else {
+            daynight.byDayNightFilterType = 0;//白天
+        }
+        daynight.bySwitchScheduleEnabled = 1;
+        daynight.byDayNightFilterTime = 60;
+        struDayNigh.struDayNight = daynight;
+        struDayNigh.write();
+        boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_CCDPARAMCFG_EX, channelNum, point, struDayNigh.size());
+        if (!bool) {
+            int code = hCNetSDK.NET_DVR_GetLastError();
+            log.error("设置夜视失败,请稍后重试" + code);
+        }
+        log.debug("设置夜视成功");
+        return bool;
+    }
+
+    /**
+     * @描述 聚焦开关
+     * @参数 [userId, channelNum, enable]
+     * @返回值 boolean
+     * @创建人 刘苏义
+     * @创建时间 2023/1/18 13:07
+     * @修改人和其它信息
+     */
+    @Override
+    @SdkOperate
+    public boolean controlFocusMode(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        boolean enable = cmd.isEnable();
+        Integer channelNum = cmd.getChanNo();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return false;
+        }
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        NET_DVR_FOCUSMODE_CFG struFocusMode = new NET_DVR_FOCUSMODE_CFG();
+        Pointer point = struFocusMode.getPointer();
+        IntByReference ibrBytesReturned = new IntByReference(0);
+        boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_FOCUSMODECFG, channelNum, point, struFocusMode.size(), ibrBytesReturned);
+        if (!b_GetCameraParam) {
+            log.error("获取前端参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError());
+        }
+        struFocusMode.read();
+        log.debug("当前聚焦模式:" + struFocusMode.byFocusMode);
+
+        if (enable) {
+            struFocusMode.byFocusMode = 1;//手动聚焦
+        } else {
+            struFocusMode.byAutoFocusMode = 1;
+            struFocusMode.byFocusMode = 2;//自动聚焦
+        }
+        struFocusMode.byFocusDefinitionDisplay = 1;
+        struFocusMode.byFocusSpeedLevel = 3;
+        struFocusMode.write();
+        boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_FOCUSMODECFG, channelNum, point, struFocusMode.size());
+        if (!bool) {
+            int code = hCNetSDK.NET_DVR_GetLastError();
+            log.error("设置聚焦模式失败,请稍后重试" + code);
+        }
+        log.debug("设置聚焦模式成功");
+        return bool;
+    }
+
+    /**
+     * @描述 获取聚焦模式
+     * @参数 [userId, channelNum]
+     * @返回值 boolean
+     * @创建人 刘苏义
+     * @创建时间 2023/1/18 13:07
+     * @修改人和其它信息
+     */
+    public String getFocusMode(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer channelNum = cmd.getChanNo();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return "";
+        }
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        NET_DVR_FOCUSMODE_CFG struFocusMode = new NET_DVR_FOCUSMODE_CFG();
+        Pointer point = struFocusMode.getPointer();
+        IntByReference ibrBytesReturned = new IntByReference(0);
+        boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_FOCUSMODECFG, channelNum, point, struFocusMode.size(), ibrBytesReturned);
+        if (!b_GetCameraParam) {
+            log.error("获取前端参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError());
+        }
+        struFocusMode.read();
+        log.debug("当前聚焦模式:" + struFocusMode.byFocusMode);
+        return String.valueOf(struFocusMode.byFocusMode);
+    }
+
+    /**
+     * @描述 云台加热开关
+     * @参数 [userId, channelNum, enable]
+     * @返回值 boolean
+     * @创建人 刘苏义
+     * @创建时间 2023/1/18 13:07
+     * @修改人和其它信息
+     */
+    @Override
+    @SdkOperate
+    public boolean controlPTHeateRpwron(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        boolean enable = cmd.isEnable();
+        Integer channelNum = cmd.getChanNo();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return false;
+        }
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        int dwStop;
+        if (enable) {
+            dwStop = 0;//开启
+        } else {
+            dwStop = 1;//关闭
+        }
+        boolean bool = hCNetSDK.NET_DVR_PTZControl_Other(userId, channelNum, HEATER_PWRON, dwStop);
+        if (!bool) {
+            int code = hCNetSDK.NET_DVR_GetLastError();
+            log.error("设置云台加热失败,请稍后重试" + code);
+        }
+        log.debug("设置云台加热成功");
+        return bool;
+    }
+
+    /**
+     * @描述 镜头加热开关
+     * @参数 [userId, channelNum, enable]
+     * @返回值 boolean
+     * @创建人 刘苏义
+     * @创建时间 2023/1/18 13:07
+     * @修改人和其它信息
+     */
+    @Override
+    @SdkOperate
+    public boolean controlCameraDeicing(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        boolean enable = cmd.isEnable();
+        Integer channelNum = cmd.getChanNo();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return false;
+        }
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        NET_DVR_DEVSERVER_CFG struDeicing = new NET_DVR_DEVSERVER_CFG();
+        Pointer point = struDeicing.getPointer();
+        IntByReference ibrBytesReturned = new IntByReference(0);
+        boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(userId, NET_DVR_GET_DEVSERVER_CFG, channelNum, point, struDeicing.size(), ibrBytesReturned);
+        if (!b_GetCameraParam) {
+            log.error("获取前端参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError());
+        }
+        struDeicing.read();
+        log.debug("是否开启除冰:" + struDeicing.byEnableDeicing);
+
+        if (enable) {
+            struDeicing.byEnableDeicing = 1;//开启
+        } else {
+            struDeicing.byEnableDeicing = 0;//关闭
+        }
+        struDeicing.write();
+        boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_DEVSERVER_CFG, channelNum, point, struDeicing.size());
+        if (!bool) {
+            int code = hCNetSDK.NET_DVR_GetLastError();
+            log.error("设置镜头除冰失败,请稍后重试" + code);
+        }
+        log.debug("设置镜头除冰成功");
+        return bool;
+    }
+
+    /**
+     * 截图 返给前端
+     *
+     * @param cmd 相机命令
+     */
+    public String captureJPEGPicture(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer channelNum = cmd.getChanNo();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return "";
+        }
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        NET_DVR_WORKSTATE_V30 devwork = new NET_DVR_WORKSTATE_V30();
+        if (!hCNetSDK.NET_DVR_GetDVRWorkState_V30(userId, devwork)) {
+            // 返回Boolean值,判断是否获取设备能力
+            log.error("抓图失败,请稍后重试");
+        }
+        //图片质量
+        NET_DVR_JPEGPARA jpeg = new NET_DVR_JPEGPARA();
+        //设置图片分辨率
+        jpeg.wPicSize = 0;
+        //设置图片质量
+        jpeg.wPicQuality = 0;
+        IntByReference a = new IntByReference();
+        //设置图片大小
+        ByteBuffer jpegBuffer = ByteBuffer.allocate(1024 * 1024);
+        // 抓图到内存,单帧数据捕获并保存成JPEG存放在指定的内存空间中
+        boolean is = hCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(userId, channelNum, jpeg, jpegBuffer, 1024 * 1024, a);
+        log.debug("-----------这里开始图片存入内存----------" + is);
+
+        Base64.Encoder decoder = Base64.getEncoder();
+        //  BASE64Encoder encoder = new BASE64Encoder();
+        String png_base64 = decoder.encodeToString(jpegBuffer.array());//转换成base64串
+        png_base64 = png_base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\n
+        log.debug("-----------处理完成截图数据----------");
+        return png_base64;
+    }
+
+    /**
+     * @描述 截图 存服务器
+     * @参数 [cameraId, channelNum]
+     * @返回值 java.lang.String
+     * @创建人 刘苏义
+     * @创建时间 2023/2/2 14:59
+     * @修改人和其它信息
+     */
+    @Override
+    @SdkOperate
+    public String picCutCate(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer channelNum = cmd.getChanNo();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return "";
+        }
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        //图片信息
+        NET_DVR_JPEGPARA jpeg = new NET_DVR_JPEGPARA();
+        //设置图片分辨率
+        //图片尺寸:0-CIF(352*288/352*240),1-QCIF(176*144/176*120),2-4CIF(704*576/704*480)或D1(720*576/720*486),3-UXGA(1600*1200),
+        // 4-SVGA(800*600),5-HD720P(1280*720),6-VGA(640*480),7-XVGA(1280*960),8-HD900P(1600*900),9-HD1080P(1920*1080),10-2560*1920,
+        // 11-1600*304,12-2048*1536,13-2448*2048,14-2448*1200,15-2448*800,16-XGA(1024*768),17-SXGA(1280*1024),18-WD1(960*576/960*480),
+        // 19-1080I(1920*1080),20-576*576,21-1536*1536,22-1920*1920,23-320*240,24-720*720,25-1024*768,26-1280*1280,27-1600*600,
+        // 28-2048*768,29-160*120,75-336*256,78-384*256,79-384*216,80-320*256,82-320*192,83-512*384,127-480*272,128-512*272, 161-288*320,
+        // 162-144*176,163-480*640,164-240*320,165-120*160,166-576*720,167-720*1280,168-576*960,180-180*240, 181-360*480, 182-540*720,
+        // 183-720*960, 184-960*1280, 185-1080*1440, 500-384*288, 0xff-Auto(使用当前码流分辨率)
+        jpeg.wPicSize = 0;
+        //设置图片质量:0-最好,1-较好,2-一般
+        jpeg.wPicQuality = 0;
+        IntByReference a = new IntByReference();
+        //设置图片大小
+        ByteBuffer jpegBuffer = ByteBuffer.allocate(1024 * 1024);
+        // 抓图到内存,单帧数据捕获并保存成JPEG存放在指定的内存空间中
+        log.debug("-----------这里开始封装 NET_DVR_CaptureJPEGPicture_NEW---------");
+        boolean is = hCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(userId, channelNum, jpeg, jpegBuffer, 1024 * 1024, a);
+        log.debug("-----------这里开始图片存入内存----------" + is);
+        if (is) {
+            log.debug("hksdk(抓图)-结果状态值(0表示成功):" + hCNetSDK.NET_DVR_GetLastError());
+            byte[] array = jpegBuffer.array();
+            //存储到minio
+            String BucketName = "pic";
+            String ObjectName = "capture/" + IdUtils.simpleUUID() + ".jpeg";
+            InputStream input = new ByteArrayInputStream(array);
+            String url = "";
+            try {
+                boolean b = MinioUtil.uploadObject(BucketName, ObjectName, input, input.available(), MimeTypeUtils.IMAGE_JPEG);
+                if (b) {
+                    url = MinioUtil.getBucketObjectUrl(BucketName, ObjectName);
+                    log.debug("上传文件成功!" + url);
+                }
+            } catch (IOException ex) {
+                log.error("上传文件异常:" + ex.getMessage());
+            }
+            return url;
+        } else {
+            int code = hCNetSDK.NET_DVR_GetLastError();
+            log.error("抓图失败,请稍后重试" + code);
+            return "";
+        }
+    }
+
+    /**
+     * @描述 短时录像
+     * @参数 [userId, channelNum, enable]
+     * @返回值 void
+     * @创建人 刘苏义
+     * @创建时间 2023/1/20 11:18
+     * @修改人和其它信息
+     */
+    @Override
+    public String record(CameraCmd cmd) {
+        try {
+            String cameraId = cmd.getCameraId();
+            Integer channelNum = cmd.getChanNo();
+            String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
+            boolean enable = cmd.isEnable();
+            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+                return "";
+            }
+            Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+            //强制I帧结构体对象
+            HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME();   //新建结构体对象
+            netDvrIFrame.read();
+            netDvrIFrame.dwChannel = channelNum;//因为上文代码中设置了通道号,按照上文中的设置
+            netDvrIFrame.byStreamType = 0;
+            netDvrIFrame.dwSize = netDvrIFrame.size();
+            netDvrIFrame.write();
+            if (!hCNetSDK.NET_DVR_RemoteControl(userId, 3402, netDvrIFrame.getPointer(), netDvrIFrame.dwSize)) {
+                log.error("强制I帧 错误码为:  " + hCNetSDK.NET_DVR_GetLastError());
+            }
+            //预览参数
+            NET_DVR_PREVIEWINFO previewinfo = new NET_DVR_PREVIEWINFO();
+            previewinfo.read();
+            previewinfo.lChannel = channelNum;
+            previewinfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-三码流,3-虚拟码流,以此类推
+            previewinfo.dwLinkMode = 0;//连接方式:0-TCP方式,1-UDP方式,2-多播方式,3-RTP方式,4-RTP/RTSP,5-RTP/HTTP,6-HRUDP(可靠传输),7-RTSP/HTTPS,8-NPQ
+            previewinfo.hPlayWnd = null;//播放窗口的句柄,为NULL表示不解码显示。
+            previewinfo.bBlocked = 0;//0- 非阻塞取流,1-阻塞取流
+            previewinfo.byNPQMode = 0;//NPQ模式:0-直连模式,1-过流媒体模式
+            previewinfo.write();
+            String url = "";
+            if (enable) {
+                if (!GlobalVariable.previewMap.containsKey(cameraId)) {
+                    int lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(userId, previewinfo, null, null);
+                    if (lRealHandle == -1) {
+                        log.error("取流失败" + hCNetSDK.NET_DVR_GetLastError());
+                        return "";
+                    }
+                    log.debug("取流成功");
+                    GlobalVariable.previewMap.put(cameraId, lRealHandle);
+                }
+                if (!hCNetSDK.NET_DVR_SaveRealData_V30(GlobalVariable.previewMap.get(cameraId), 2, path)) {
+                    log.error("保存视频文件到临时文件夹失败 错误码为:  " + hCNetSDK.NET_DVR_GetLastError());
+                    return "";
+                }
+                log.debug("录像开始");
+            } else {
+                if (GlobalVariable.previewMap.containsKey(cameraId)) {
+                    Integer lRealHandle = GlobalVariable.previewMap.get(cameraId);
+                    hCNetSDK.NET_DVR_StopRealPlay(lRealHandle);
+                    GlobalVariable.previewMap.remove(cameraId);
+                }
+                log.debug("录像停止");
+            }
+            return url;
+        } catch (Exception ex) {
+            log.error("录像异常" + ex.getMessage());
+            return "";
+        }
+    }
+
+    @Override
+    public void recordStart(CameraCmd cmd) {
+        try {
+            String cameraId = cmd.getCameraId();
+            Integer channelNum = cmd.getChanNo();
+            String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
+            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+                return;
+            }
+            Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+            //强制I帧结构体对象
+            HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME();   //新建结构体对象
+            netDvrIFrame.read();
+            netDvrIFrame.dwChannel = channelNum;//因为上文代码中设置了通道号,按照上文中的设置
+            netDvrIFrame.byStreamType = 0;
+            netDvrIFrame.dwSize = netDvrIFrame.size();
+            netDvrIFrame.write();
+            if (!hCNetSDK.NET_DVR_RemoteControl(userId, 3402, netDvrIFrame.getPointer(), netDvrIFrame.dwSize)) {
+                log.error("强制I帧 错误码为:  " + hCNetSDK.NET_DVR_GetLastError());
+            }
+            //预览参数
+            NET_DVR_PREVIEWINFO previewinfo = new NET_DVR_PREVIEWINFO();
+            previewinfo.read();
+            previewinfo.lChannel = channelNum;
+            previewinfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-三码流,3-虚拟码流,以此类推
+            previewinfo.dwLinkMode = 0;//连接方式:0-TCP方式,1-UDP方式,2-多播方式,3-RTP方式,4-RTP/RTSP,5-RTP/HTTP,6-HRUDP(可靠传输),7-RTSP/HTTPS,8-NPQ
+            previewinfo.hPlayWnd = null;//播放窗口的句柄,为NULL表示不解码显示。
+            previewinfo.bBlocked = 0;//0- 非阻塞取流,1-阻塞取流
+            previewinfo.byNPQMode = 0;//NPQ模式:0-直连模式,1-过流媒体模式
+            previewinfo.write();
+            if (GlobalVariable.previewMap.containsKey(cameraId)) {
+                Integer lRealHandle = GlobalVariable.previewMap.get(cameraId);
+                hCNetSDK.NET_DVR_StopRealPlay(lRealHandle);
+                GlobalVariable.previewMap.remove(cameraId);
+                log.debug("停止当前录像");
+            }
+            int lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(userId, previewinfo, null, null);
+            if (lRealHandle == -1) {
+                log.error("取流失败" + hCNetSDK.NET_DVR_GetLastError());
+                return;
+            }
+            log.debug("取流成功");
+            GlobalVariable.threadMap.put(cameraId, Thread.currentThread().getName());
+            GlobalVariable.previewMap.put(cameraId, lRealHandle);
+            if (!hCNetSDK.NET_DVR_SaveRealData_V30(GlobalVariable.previewMap.get(cameraId), 2, path)) {
+                log.error("保存视频文件到临时文件夹失败 错误码为:  " + hCNetSDK.NET_DVR_GetLastError());
+                return;
+            }
+            log.debug("录像开始");
+        } catch (Exception ex) {
+            log.error("开始录像异常" + ex.getMessage());
+        }
+    }
+
+    @Override
+    public String recordStopToMinio(CameraCmd cmd) {
+        String url = "";
+        try {
+            String cameraId = cmd.getCameraId();
+            Integer channelNum = cmd.getChanNo();
+            String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
+            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+                return "";
+            }
+            Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+            //region 强制I帧
+            HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME();   //新建结构体对象
+            netDvrIFrame.read();
+            netDvrIFrame.dwChannel = channelNum;//因为上文代码中设置了通道号,按照上文中的设置
+            netDvrIFrame.byStreamType = 0;
+            netDvrIFrame.dwSize = netDvrIFrame.size();
+            netDvrIFrame.write();
+            if (!hCNetSDK.NET_DVR_RemoteControl(userId, 3402, netDvrIFrame.getPointer(), netDvrIFrame.dwSize)) {
+                log.error("强制I帧 错误码为:  " + hCNetSDK.NET_DVR_GetLastError());
+            }
+            //endregion
+            //region 预览参数
+            NET_DVR_PREVIEWINFO previewinfo = new NET_DVR_PREVIEWINFO();
+            previewinfo.read();
+            previewinfo.lChannel = channelNum;
+            previewinfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-三码流,3-虚拟码流,以此类推
+            previewinfo.dwLinkMode = 0;//连接方式:0-TCP方式,1-UDP方式,2-多播方式,3-RTP方式,4-RTP/RTSP,5-RTP/HTTP,6-HRUDP(可靠传输),7-RTSP/HTTPS,8-NPQ
+            previewinfo.hPlayWnd = null;//播放窗口的句柄,为NULL表示不解码显示。
+            previewinfo.bBlocked = 0;//0- 非阻塞取流,1-阻塞取流
+            previewinfo.byNPQMode = 0;//NPQ模式:0-直连模式,1-过流媒体模式
+            previewinfo.write();
+            //endregion
+            if (GlobalVariable.previewMap.containsKey(cameraId)) {
+                Integer lRealHandle = GlobalVariable.previewMap.get(cameraId);
+                hCNetSDK.NET_DVR_StopRealPlay(lRealHandle);
+                GlobalVariable.previewMap.remove(cameraId);
+            }
+            log.debug("录像停止");
+            //存入minio
+            String BucketName = cmd.getRecordBucketName();
+            String ObjectName = cmd.getRecordObjectName() + ".mp4";
+            FileInputStream stream = new FileInputStream(path);
+            boolean b = MinioUtil.uploadObject(BucketName, ObjectName, stream, stream.available(), "video/MP4");
+            if (b) {
+                url = MinioUtil.getBucketObjectUrl(BucketName, ObjectName);
+                log.debug("上传文件成功!" + url);
+            }
+            return url;
+        } catch (Exception ex) {
+            log.error("录像异常" + ex.getMessage());
+            return "";
+        }
+    }
+
+    @Override
+    public void recordStopNotToMinio(CameraCmd cmd) {
+        try {
+            String cameraId = cmd.getCameraId();
+            Integer channelNum = cmd.getChanNo();
+            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+                return;
+            }
+            Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+            //强制I帧结构体对象
+            HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME();   //新建结构体对象
+            netDvrIFrame.read();
+            netDvrIFrame.dwChannel = channelNum;//因为上文代码中设置了通道号,按照上文中的设置
+            netDvrIFrame.byStreamType = 0;
+            netDvrIFrame.dwSize = netDvrIFrame.size();
+            netDvrIFrame.write();
+            if (!hCNetSDK.NET_DVR_RemoteControl(userId, 3402, netDvrIFrame.getPointer(), netDvrIFrame.dwSize)) {
+                log.error("强制I帧 错误码为:  " + hCNetSDK.NET_DVR_GetLastError());
+            }
+            //预览参数
+            NET_DVR_PREVIEWINFO previewinfo = new NET_DVR_PREVIEWINFO();
+            previewinfo.read();
+            previewinfo.lChannel = channelNum;
+            previewinfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-三码流,3-虚拟码流,以此类推
+            previewinfo.dwLinkMode = 0;//连接方式:0-TCP方式,1-UDP方式,2-多播方式,3-RTP方式,4-RTP/RTSP,5-RTP/HTTP,6-HRUDP(可靠传输),7-RTSP/HTTPS,8-NPQ
+            previewinfo.hPlayWnd = null;//播放窗口的句柄,为NULL表示不解码显示。
+            previewinfo.bBlocked = 0;//0- 非阻塞取流,1-阻塞取流
+            previewinfo.byNPQMode = 0;//NPQ模式:0-直连模式,1-过流媒体模式
+            previewinfo.write();
+            if (GlobalVariable.previewMap.containsKey(cameraId)) {
+                Integer lRealHandle = GlobalVariable.previewMap.get(cameraId);
+                hCNetSDK.NET_DVR_StopRealPlay(lRealHandle);
+                GlobalVariable.previewMap.remove(cameraId);
+            }
+            log.debug("录像停止");
+        } catch (Exception ex) {
+            log.error("录像停止异常" + ex.getMessage());
+        }
+    }
+
+    //获取IP通道
+    @Override
+    public List<ArdChannel> getCameraChannelList(ArdCameras camera) {
+        /*获取通道*/
+        List<ArdChannel> channelList = new ArrayList<>();
+        try {
+            Integer chanNum = camera.getChanNum();
+            Integer startDChan = camera.getStartDChan();
+            if (chanNum > 0) {
+                // 获取通道号
+                for (int iChannum = 0; iChannum < chanNum; iChannum++) {
+                    ArdChannel ardChannel = new ArdChannel();
+                    int channum = iChannum + startDChan + 1;
+                    HCNetSDK.NET_DVR_PICCFG_V40 strPicCfg = new HCNetSDK.NET_DVR_PICCFG_V40();
+                    strPicCfg.dwSize = strPicCfg.size();
+                    strPicCfg.write();
+                    Pointer pStrPicCfg = strPicCfg.getPointer();
+                    NativeLong lChannel = new NativeLong(channum);
+                    IntByReference pInt = new IntByReference(0);
+                    boolean b_GetPicCfg = hCNetSDK.NET_DVR_GetDVRConfig(camera.getLoginId(), HCNetSDK.NET_DVR_GET_PICCFG_V40, lChannel.intValue(),
+                            pStrPicCfg, strPicCfg.size(), pInt);
+                    if (b_GetPicCfg) {
+                        strPicCfg.read();
+                        String channelName = new String(strPicCfg.sChanName, "GBK").trim();
+                        ardChannel.setName(channelName);
+                    }
+                    ardChannel.setDeviceId(camera.getId());
+                    ardChannel.setChanNo(iChannum + 1);
+                    channelList.add(ardChannel);
+                }
+            }
+        } catch (Exception ex) {
+            log.error("获取相机通道异常:" + ex.getMessage());
+        }
+        return channelList;
+    }
+
+    /**
+     * @描述 获取GIS信息数据
+     * @参数 [userId, channelNum]
+     * @返回值 boolean
+     * @创建人 刘苏义
+     * @创建时间 2023/1/17 16:36
+     * @修改人和其它信息 0-解锁 1-锁定
+     */
+    @Override
+    public Map<String, Object> getGisInfo(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer channelNum = cmd.getChanNo();
+        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+            return new HashMap<>();
+        }
+        // 获取参数
+        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
+        HCNetSDK.NET_DVR_STD_CONFIG struStdCfg = new HCNetSDK.NET_DVR_STD_CONFIG();
+        HCNetSDK.NET_DVR_GIS_INFO struGisInfo = new HCNetSDK.NET_DVR_GIS_INFO();
+        struStdCfg.read();
+        IntByReference lchannel = new IntByReference(channelNum);
+        struStdCfg.lpCondBuffer = lchannel.getPointer();
+        struStdCfg.dwCondSize = 4;
+        struStdCfg.lpOutBuffer = struGisInfo.getPointer();
+        struStdCfg.dwOutSize = struGisInfo.size();
+        struStdCfg.write();//设置前之前要write()
+        boolean bool = hCNetSDK.NET_DVR_GetSTDConfig(userId, NET_DVR_GET_GISINFO, struStdCfg);
+        if (!bool) {
+            int code = hCNetSDK.NET_DVR_GetLastError();
+            log.error("获取GIS信息数据失败,请稍后重试" + code);
+            return new HashMap<>();
+        } else {
+            struGisInfo.read();
+            Map<String, Object> map = new HashMap<>();
+            map.put("p", struGisInfo.struPtzPos.fPanPos);
+            map.put("t", struGisInfo.struPtzPos.fTiltPos < 0 ? struGisInfo.struPtzPos.fTiltPos + 360 : struGisInfo.struPtzPos.fTiltPos);
+            map.put("z", struGisInfo.struPtzPos.fZoomPos);
+            map.put("fHorFieldAngle", struGisInfo.fHorizontalValue);// 水平视场角
+            map.put("fVerFieldAngle", struGisInfo.fVerticalValue);// 垂直视场角
+            return map;
+        }
+    }
 }
\ No newline at end of file
diff --git a/lib/ClientDemoDll/ReadMe.txt b/lib/ClientDemoDll/ReadMe.txt
deleted file mode 100644
index 8006f36..0000000
--- a/lib/ClientDemoDll/ReadMe.txt
+++ /dev/null
@@ -1 +0,0 @@
-The dll in this directory��iconv.dll,libxml2.dll,zlib1.dll,calib.dll��only used in ClientDemo.
\ No newline at end of file
diff --git a/lib/hikDll/ClientDemoDll/ReadMe.txt b/lib/hikDll/ClientDemoDll/ReadMe.txt
new file mode 100644
index 0000000..8fc557b
--- /dev/null
+++ b/lib/hikDll/ClientDemoDll/ReadMe.txt
@@ -0,0 +1 @@
+The dll in this directory(iconv.dll,libxml2.dll,zlib1.dll,calib.dll)only used in ClientDemo.
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/application-dev-druid.yml b/ruoyi-admin/src/main/resources/application-dev-druid.yml
index 9f8f361..737cda9 100644
--- a/ruoyi-admin/src/main/resources/application-dev-druid.yml
+++ b/ruoyi-admin/src/main/resources/application-dev-druid.yml
@@ -1,58 +1,58 @@
-# 数据源配置
-spring:
-  datasource:
-    type: com.alibaba.druid.pool.DruidDataSource
-    druid:
-      # 主库数据源
-      master:
-        driverClassName: org.postgresql.Driver
-        url: jdbc:postgresql://192.168.1.15:5432/ry-vue?stringtype=unspecified
-        username: postgres
-        password: postgres
-        # 从库数据源
-      slave:
-      # 从数据源开关/默认关闭
-      # enabled: true
-      # driverClassName: org.postgresql.Driver
-      # url: jdbc:postgresql://112.98.126.2:35432/ard732
-      # username: postgres
-      # password: Yykj.2017
-      # 初始连接数
-      initialSize: 5
-      # 最小连接池数量
-      minIdle: 10
-      # 最大连接池数量
-      maxActive: 20
-      # 配置获取连接等待超时的时间
-      maxWait: 60000
-      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
-      timeBetweenEvictionRunsMillis: 60000
-      # 配置一个连接在池中最小生存的时间,单位是毫秒
-      minEvictableIdleTimeMillis: 300000
-      # 配置一个连接在池中最大生存的时间,单位是毫秒
-      maxEvictableIdleTimeMillis: 900000
-      # 配置检测连接是否有效
-      validationQuery: SELECT 1
-      testWhileIdle: true
-      testOnBorrow: false
-      testOnReturn: false
-      webStatFilter:
-        enabled: true
-      statViewServlet:
-        enabled: true
-        # 设置白名单,不填则允许所有访问
-        allow:
-        url-pattern: /druid/*
-        # 控制台管理用户名和密码
-        login-username: ruoyi
-        login-password: 123456
-      filter:
-        stat:
-          enabled: true
-          # 慢SQL记录
-          log-slow-sql: true
-          slow-sql-millis: 10000
-          merge-sql: true
-        wall:
-          config:
+# 数据源配置
+spring:
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      # 主库数据源
+      master:
+        driverClassName: org.postgresql.Driver
+        url: jdbc:postgresql://192.168.2.15:5432/ry-vue?stringtype=unspecified
+        username: postgres
+        password: postgres
+        # 从库数据源
+      slave:
+      # 从数据源开关/默认关闭
+      # enabled: true
+      # driverClassName: org.postgresql.Driver
+      # url: jdbc:postgresql://112.98.126.2:35432/ard732
+      # username: postgres
+      # password: Yykj.2017
+      # 初始连接数
+      initialSize: 5
+      # 最小连接池数量
+      minIdle: 10
+      # 最大连接池数量
+      maxActive: 20
+      # 配置获取连接等待超时的时间
+      maxWait: 60000
+      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+      timeBetweenEvictionRunsMillis: 60000
+      # 配置一个连接在池中最小生存的时间,单位是毫秒
+      minEvictableIdleTimeMillis: 300000
+      # 配置一个连接在池中最大生存的时间,单位是毫秒
+      maxEvictableIdleTimeMillis: 900000
+      # 配置检测连接是否有效
+      validationQuery: SELECT 1
+      testWhileIdle: true
+      testOnBorrow: false
+      testOnReturn: false
+      webStatFilter:
+        enabled: true
+      statViewServlet:
+        enabled: true
+        # 设置白名单,不填则允许所有访问
+        allow:
+        url-pattern: /druid/*
+        # 控制台管理用户名和密码
+        login-username: ruoyi
+        login-password: 123456
+      filter:
+        stat:
+          enabled: true
+          # 慢SQL记录
+          log-slow-sql: true
+          slow-sql-millis: 10000
+          merge-sql: true
+        wall:
+          config:
             multi-statement-allow: true
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml
index 961213b..ad63a2a 100644
--- a/ruoyi-admin/src/main/resources/application-dev.yml
+++ b/ruoyi-admin/src/main/resources/application-dev.yml
@@ -1,101 +1,102 @@
-# 开发环境配置
-server:
-  # 服务器的HTTP端口,默认为8080
-  port: 8080
-  servlet:
-    # 应用的访问路径
-    context-path: /
-  tomcat:
-    # tomcat的URI编码
-    uri-encoding: UTF-8
-    # 连接数满后的排队数,默认为100
-    accept-count: 1000
-    threads:
-      # tomcat最大线程数,默认为200
-      max: 800
-      # Tomcat启动初始化的线程数,默认值10
-      min-spare: 100
-# Spring配置
-spring:
-  # redis 配置
-  redis:
-    # 地址
-    host: 192.168.1.15
-    # 端口,默认为6379
-    port: 6379
-    # 数据库索引
-    database: 0
-    # 密码
-    password:
-    # 连接超时时间
-    timeout: 10s
-    lettuce:
-      pool:
-        # 连接池中的最小空闲连接
-        min-idle: 0
-        # 连接池中的最大空闲连接
-        max-idle: 8
-        # 连接池的最大数据库连接数
-        max-active: 8
-        # #连接池最大阻塞等待时间(使用负值表示没有限制)
-        max-wait: -1ms
-# 日志配置
-logging:
-  level:
-    authorize: info
-    minio: info
-    hikSdk: info
-    stealAlarm: info
-    websocket: info
-    patrolInspectionTask: info
-    mqtt: info
-    guideQueue: info
-    rongCloud: info
-    cmd: info
-    uav: info
-    sy: info
-
-
-# webrtc-streamer配置
-webrtc:
-  enabled: true
-  host: 127.0.0.1:8000
-# minio配置
-minio:
-  enabled: false
-  endpoint: http://192.168.1.15:9001
-  accessKey: admin
-  secretKey: xzx12345
-  path: G:/DATA
-# forest配置
-forest:
-  backend: okhttp3             # 后端HTTP框架(默认为 okhttp3)
-  max-connections: 1000        # 连接池最大连接数(默认为 500)
-  max-route-connections: 500   # 每个路由的最大连接数(默认为 500)
-  max-request-queue-size: 100  # [自v1.5.22版本起可用] 最大请求等待队列大小
-  max-async-thread-size: 300   # [自v1.5.21版本起可用] 最大异步线程数
-  max-async-queue-size: 16     # [自v1.5.22版本起可用] 最大异步线程池队列大小
-  timeout: 3000                # [已不推荐使用] 请求超时时间,单位为毫秒(默认为 3000)
-  connect-timeout: 3000        # 连接超时时间,单位为毫秒(默认为 timeout)
-  read-timeout: 3000           # 数据读取超时时间,单位为毫秒(默认为 timeout)
-  max-retry-count: 0           # 请求失败后重试次数(默认为 0 次不重试)
-  ssl-protocol: TLS            # 单向验证的HTTPS的默认TLS协议(默认为 TLS)
-  log-enabled: true            # 打开或关闭日志(默认为 true)
-  log-request: true            # 打开/关闭Forest请求日志(默认为 true)
-  log-response-status: true    # 打开/关闭Forest响应状态日志(默认为 true)
-  log-response-content: true   # 打开/关闭Forest响应内容日志(默认为 false)
-  async-mode: platform         # [自v1.5.27版本起可用] 异步模式(默认为 platform)
-#流媒体转码服务器
-mediamtx:
-  enabled: true
-  host: 127.0.0.1
-#mqtt
-mqtt:
-  host: tcp://192.168.1.15:1883
-  clientId: m227
-  username: admin
-  password: xzx12345
-  topic: minioEvent
-  timeout: 100
-  keepalive: 60
+# 开发环境配置
+server:
+  # 服务器的HTTP端口,默认为8080
+  port: 8080
+  servlet:
+    # 应用的访问路径
+    context-path: /
+  tomcat:
+    # tomcat的URI编码
+    uri-encoding: UTF-8
+    # 连接数满后的排队数,默认为100
+    accept-count: 1000
+    threads:
+      # tomcat最大线程数,默认为200
+      max: 800
+      # Tomcat启动初始化的线程数,默认值10
+      min-spare: 100
+# Spring配置
+spring:
+  # redis 配置
+  redis:
+    # 地址
+    host: 127.0.0.1
+    # 端口,默认为6379
+    port: 6379
+    # 数据库索引
+    database: 0
+    # 密码
+    password:
+    # 连接超时时间
+    timeout: 10s
+    lettuce:
+      pool:
+        # 连接池中的最小空闲连接
+        min-idle: 0
+        # 连接池中的最大空闲连接
+        max-idle: 8
+        # 连接池的最大数据库连接数
+        max-active: 8
+        # #连接池最大阻塞等待时间(使用负值表示没有限制)
+        max-wait: -1ms
+# 日志配置
+logging:
+  level:
+    authorize: info
+    minio: info
+    hikSdk: info
+    dhSdk: debug
+    stealAlarm: info
+    websocket: info
+    patrolInspectionTask: info
+    mqtt: info
+    guideQueue: info
+    rongCloud: info
+    cmd: info
+    uav: info
+    sy: info
+
+
+# webrtc-streamer配置
+webrtc:
+  enabled: false
+  host: 127.0.0.1:8000
+# minio配置
+minio:
+  enabled: false
+  endpoint: http://192.168.2.15:9001
+  accessKey: admin
+  secretKey: xzx12345
+  path: G:/DATA
+# forest配置
+forest:
+  backend: okhttp3             # 后端HTTP框架(默认为 okhttp3)
+  max-connections: 1000        # 连接池最大连接数(默认为 500)
+  max-route-connections: 500   # 每个路由的最大连接数(默认为 500)
+  max-request-queue-size: 100  # [自v1.5.22版本起可用] 最大请求等待队列大小
+  max-async-thread-size: 300   # [自v1.5.21版本起可用] 最大异步线程数
+  max-async-queue-size: 16     # [自v1.5.22版本起可用] 最大异步线程池队列大小
+  timeout: 3000                # [已不推荐使用] 请求超时时间,单位为毫秒(默认为 3000)
+  connect-timeout: 3000        # 连接超时时间,单位为毫秒(默认为 timeout)
+  read-timeout: 3000           # 数据读取超时时间,单位为毫秒(默认为 timeout)
+  max-retry-count: 0           # 请求失败后重试次数(默认为 0 次不重试)
+  ssl-protocol: TLS            # 单向验证的HTTPS的默认TLS协议(默认为 TLS)
+  log-enabled: true            # 打开或关闭日志(默认为 true)
+  log-request: true            # 打开/关闭Forest请求日志(默认为 true)
+  log-response-status: true    # 打开/关闭Forest响应状态日志(默认为 true)
+  log-response-content: true   # 打开/关闭Forest响应内容日志(默认为 false)
+  async-mode: platform         # [自v1.5.27版本起可用] 异步模式(默认为 platform)
+#流媒体转码服务器
+mediamtx:
+  enabled: false
+  host: 192.168.1.14
+#mqtt
+mqtt:
+  host: tcp://192.168.2.15:1883
+  clientId: Server-227
+  username: admin
+  password: admin
+  topic: minioEvent
+  timeout: 100
+  keepalive: 60
   enabled: true
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 45fd4b6..1d28596 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -1,105 +1,105 @@
-# 项目相关配置
-ard:
-  # 名称
-  name: 厂级平台4.0
-  # 版本
-  version: 3.8.5
-  # 版权年份
-  copyrightYear: 2023
-  # 实例演示开关
-  demoEnabled: true
-  # 文件路径 示例( Windows配置D:/ard/uploadPath,Linux配置 /home/ard/uploadPath)
-  profile: D:/ard/uploadPath
-  # 获取ip地址开关
-  addressEnabled: false
-  # 验证码类型 math 数组计算 char 字符验证
-  captchaType: char
-# 用户配置
-user:
-  password:
-    # 密码最大错误次数
-    maxRetryCount: 5
-    # 密码锁定时间(默认10分钟)
-    lockTime: 10
-# token配置
-token:
-  # 令牌自定义标识
-  header: Authorization
-  # 令牌密钥
-  secret: abcdefghijklmnopqrstuvwxyz
-  # 令牌有效期(默认30分钟)
-  expireTime: 30
-# MyBatis配置
-#mybatis:
-#    # 搜索指定包别名
-#    typeAliasesPackage: com.ruoyi.**.domain
-#    # 配置mapper的扫描,找到所有的mapper.xml映射文件
-#    mapperLocations: classpath*:mapper/**/*Mapper.xml
-#    # 加载全局的配置文件
-#    configLocation: classpath:mybatis/mybatis-config.xml
-mybatis-plus:
-  type-Aliases-Package: com.ruoyi.**.domain
-  mapper-Locations: classpath*:mapper/**/*Mapper.xml
-  config-Location: classpath:mybatis/mybatis-config.xml
-  global-config:
-    banner: off # 关闭mybatisplus启动图标
-    db-config: #主键不用MyBatis plus的雪花算法,用数据库的主键自增
-      id-type: uuid
-#  configuration:
-#    # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射
-#    map-underscore-to-camel-case: true
-#    # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
-#    call-setters-on-nulls: true
-#    # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
-#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-# PageHelper分页插件
-pagehelper:
-  helperDialect: postgresql
-  supportMethodsArguments: true
-  params: count=countSql
-# Swagger配置
-swagger:
-  # 是否开启swagger
-  enabled: true
-  # 请求前缀
-  pathMapping: /
-# knife4j增强功能
-knife4j:
-  enable: true
-# 防止XSS攻击
-xss:
-  # 过滤开关
-  enabled: true
-  # 排除链接(多个用逗号分隔)
-  excludes: /system/notice
-  # 匹配链接
-  urlPatterns: /system/*,/monitor/*,/tool/*
-#异步线程池配置
-ThreadPoolTask:
-  corePoolSize: 20
-  maxPoolSize: 40
-  keepAliveSeconds: 300
-  queueCapacity: 50
-# Spring配置
-spring:
-  # 资源信息
-  messages:
-    # 国际化资源文件路径
-    basename: i18n/messages
-  # 文件上传
-  servlet:
-    multipart:
-      # 单个文件大小
-      max-file-size: 10MB
-      # 设置总上传的文件大小
-      max-request-size: 20MB
-  # 服务模块
-  devtools:
-    restart:
-      # 热部署开关
-      enabled: false
-  thymeleaf:
-    cache: false
-  profiles:
-    active: prod-druid,prod
-
+# 项目相关配置
+ard:
+  # 名称
+  name: 厂级平台4.0
+  # 版本
+  version: 3.8.5
+  # 版权年份
+  copyrightYear: 2023
+  # 实例演示开关
+  demoEnabled: true
+  # 文件路径 示例( Windows配置D:/ard/uploadPath,Linux配置 /home/ard/uploadPath)
+  profile: D:/ard/uploadPath
+  # 获取ip地址开关
+  addressEnabled: false
+  # 验证码类型 math 数组计算 char 字符验证
+  captchaType: char
+# 用户配置
+user:
+  password:
+    # 密码最大错误次数
+    maxRetryCount: 5
+    # 密码锁定时间(默认10分钟)
+    lockTime: 10
+# token配置
+token:
+  # 令牌自定义标识
+  header: Authorization
+  # 令牌密钥
+  secret: abcdefghijklmnopqrstuvwxyz
+  # 令牌有效期(默认30分钟)
+  expireTime: 30
+# MyBatis配置
+#mybatis:
+#    # 搜索指定包别名
+#    typeAliasesPackage: com.ruoyi.**.domain
+#    # 配置mapper的扫描,找到所有的mapper.xml映射文件
+#    mapperLocations: classpath*:mapper/**/*Mapper.xml
+#    # 加载全局的配置文件
+#    configLocation: classpath:mybatis/mybatis-config.xml
+mybatis-plus:
+  type-Aliases-Package: com.ruoyi.**.domain
+  mapper-Locations: classpath*:mapper/**/*Mapper.xml
+  config-Location: classpath:mybatis/mybatis-config.xml
+  global-config:
+    banner: off # 关闭mybatisplus启动图标
+    db-config: #主键不用MyBatis plus的雪花算法,用数据库的主键自增
+      id-type: uuid
+#  configuration:
+#    # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射
+#    map-underscore-to-camel-case: true
+#    # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
+#    call-setters-on-nulls: true
+#    # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
+#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+# PageHelper分页插件
+pagehelper:
+  helperDialect: postgresql
+  supportMethodsArguments: true
+  params: count=countSql
+# Swagger配置
+swagger:
+  # 是否开启swagger
+  enabled: true
+  # 请求前缀
+  pathMapping: /
+# knife4j增强功能
+knife4j:
+  enable: true
+# 防止XSS攻击
+xss:
+  # 过滤开关
+  enabled: true
+  # 排除链接(多个用逗号分隔)
+  excludes: /system/notice
+  # 匹配链接
+  urlPatterns: /system/*,/monitor/*,/tool/*
+#异步线程池配置
+ThreadPoolTask:
+  corePoolSize: 20
+  maxPoolSize: 40
+  keepAliveSeconds: 300
+  queueCapacity: 50
+# Spring配置
+spring:
+  # 资源信息
+  messages:
+    # 国际化资源文件路径
+    basename: i18n/messages
+  # 文件上传
+  servlet:
+    multipart:
+      # 单个文件大小
+      max-file-size: 10MB
+      # 设置总上传的文件大小
+      max-request-size: 20MB
+  # 服务模块
+  devtools:
+    restart:
+      # 热部署开关
+      enabled: false
+  thymeleaf:
+    cache: false
+  profiles:
+    active: dev-druid,dev
+

--
Gitblit v1.9.3