diff --git a/ruoyi-code/src/main/java/sdk/java/lib/netmanager/NetStructs.java b/ruoyi-code/src/main/java/sdk/java/lib/netmanager/NetStructs.java new file mode 100644 index 0000000..99eb43a --- /dev/null +++ b/ruoyi-code/src/main/java/sdk/java/lib/netmanager/NetStructs.java @@ -0,0 +1,23780 @@ +package sdk.java.lib.netmanager; + +import java.util.List; +import java.util.Arrays; + +import com.sun.jna.Pointer; +import com.sun.jna.Structure; + +import sdk.java.lib.LLONG; +import sdk.java.lib.LONG; +import sdk.java.lib.netmanager.NetDelegates.fMultiFileDownLoadByTimePosCallBack; +import sdk.java.lib.netmanager.NetDelegates.fMultiFileDownLoadByTimePosCallBackEx; +import sdk.java.lib.netmanager.NetDelegates.fMultiFileDownLoadPosCallBack; +import sdk.java.lib.netmanager.NetDelegates.fMultiFileDownLoadPosCallBackEx; +import sdk.java.lib.netmanager.NetDelegates.fNetPicStreamCallBackCV1; + +public class NetStructs { + + ////////////////////////////////////////////////////////////////////////////////////// + //图形元素相关结构 + + //尺寸 + public static class STU_SIZE extends Structure + { + public int nWidth; // 宽度 + public int nHeight; // 高度 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nWidth", "nHeight"}); + } + + public static class ByReference extends STU_SIZE implements Structure.ByReference + { + } + + public static class ByValue extends STU_SIZE implements Structure.ByValue + { + } + }; + + // 二进制数据 + public static class STU_BIN_DATA extends Structure + { + public int dwSize; + public Pointer pInBinBuf; // 二进制输入数据缓冲, char* + public int dwInBinBufSize; // 二进制输入数据长度 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "pInBinBuf", "dwInBinBufSize"}); + } + + public static class ByReference extends STU_BIN_DATA implements Structure.ByReference + { + } + + public static class ByValue extends STU_BIN_DATA implements Structure.ByValue + { + } + }; + + //二维空间点 + public static class STU_POINT extends Structure + { + public short nX; + public short nY; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nX", "nY"}); + } + + public static class ByReference extends STU_POINT implements Structure.ByReference + { + } + + public static class ByValue extends STU_POINT implements Structure.ByValue + { + } + }; + + //一对坐标点 + public static class STU_POINT_PAIR extends Structure + { + public STU_POINT[] stuPoints = new STU_POINT[2]; + + public STU_POINT_PAIR() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stuPoints"}); + } + + public static class ByReference extends STU_POINT_PAIR implements Structure.ByReference + { + } + + public static class ByValue extends STU_POINT_PAIR implements Structure.ByValue + { + } + }; + + //区域或曲线顶点信息 + public static class STU_POLY_POINTS extends Structure + { + public int nPointNum; // 顶点数 + public STU_POINT[] stuPoints = new STU_POINT[NetDefs.MAX_POLY_POINT_COUNT]; // 顶点信息 + + public STU_POLY_POINTS() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nPointNum", "stuPoints"}); + } + + public static class ByReference extends STU_POLY_POINTS implements Structure.ByReference + { + } + + public static class ByValue extends STU_POLY_POINTS implements Structure.ByValue + { + } + }; + + //区域 + public static class STU_RECT_L extends Structure + { + // 类型特殊处理为 LONG + public LONG nLeft; + public LONG nTop; + public LONG nRight; + public LONG nBottom; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nLeft", "nTop", "nRight", "nBottom"}); + } + + public static class ByReference extends STU_RECT_L implements Structure.ByReference + { + } + + public static class ByValue extends STU_RECT_L implements Structure.ByValue + { + } + }; + + public static class STU_RECT_I extends Structure + { + public int nLeft; + public int nTop; + public int nRight; + public int nBottom; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nLeft", "nTop", "nRight", "nBottom"}); + } + + public static class ByReference extends STU_RECT_I implements Structure.ByReference + { + } + + public static class ByValue extends STU_RECT_I implements Structure.ByValue + { + } + }; + + public static class STU_RECT_F extends Structure + { + public float fLeft; + public float fTop; + public float fRight; + public float fBottom; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"fLeft", "fTop", "fRight", "fBottom"}); + } + + public static class ByReference extends STU_RECT_F implements Structure.ByReference + { + } + + public static class ByValue extends STU_RECT_F implements Structure.ByValue + { + } + }; + + public static class STU_RECT_D extends Structure + { + double dLeft; + double dRight; + double dTop; + double dBottom; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dLeft", "dRight", "dTop", "dBottom"}); + } + + public static class ByReference extends STU_RECT_D implements Structure.ByReference + { + } + + public static class ByValue extends STU_RECT_D implements Structure.ByValue + { + } + }; + + //图片分辨率 + public static class STU_RESOLUTION extends Structure + { + public short snWidth; // 宽 + public short snHeight; // 高 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"snWidth", "snHeight"}); + } + + public static class ByReference extends STU_RESOLUTION implements Structure.ByReference + { + } + + public static class ByValue extends STU_RESOLUTION implements Structure.ByValue + { + } + }; + + //颜色RGBA + public static class STU_COLOR_RGBA extends Structure + { + public int nRed; // 红 + public int nGreen; // 绿 + public int nBlue; // 蓝 + public int nAlpha; // 透明 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nRed", "nGreen", "nBlue", "nAlpha"}); + } + + public static class ByReference extends STU_COLOR_RGBA implements Structure.ByReference + { + } + + public static class ByValue extends STU_COLOR_RGBA implements Structure.ByValue + { + } + }; + + //颜色BCSH + public static class STU_COLOR_BCSH extends Structure + { + public int nBirghtness; // 亮度 + public int nContrast; // 对比度 + public int nSaturation; // 饱和度 + public int nHue; // 色调 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nBirghtness", "nContrast", "nSaturation", "nHue"}); + } + + public static class ByReference extends STU_COLOR_BCSH implements Structure.ByReference + { + } + + public static class ByValue extends STU_COLOR_BCSH implements Structure.ByValue + { + } + }; + + //范围 + public static class STU_RANGE_I extends Structure + { + public int nLowValue; + public int nHighValue; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nLowValue", "nHighValue"}); + } + + public static class ByReference extends STU_RANGE_I implements Structure.ByReference + { + } + + public static class ByValue extends STU_RANGE_I implements Structure.ByValue + { + } + }; + + ////////////////////////////////////////////////////////////////////////////////////// + //时间元素相关结构 + + // 日期 + public static class STU_DATE_I extends Structure + { + public int nYear; + public int nMonth; + public int nDay; + public int[] reserved = new int[2]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nYear", "nMonth", "nDay", "reserved"}); + } + + public static class ByReference extends STU_DATE_I implements Structure.ByReference + { + } + + public static class ByValue extends STU_DATE_I implements Structure.ByValue + { + } + }; + + // 日期段 + public static class STU_DATE_SECTION_I extends Structure + { + public int nStartYear; + public int nStartMonth; + public int nStartDay; + public int nEndYear; + public int nEndMonth; + public int nEndDay; + public int[] reserved = new int[2]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nStartYear", "nStartMonth", "nStartDay", + "nEndYear", "nEndMonth", "nEndDay", "reserved"}); + } + + public static class ByReference extends STU_DATE_SECTION_I implements Structure.ByReference + { + } + + public static class ByValue extends STU_DATE_SECTION_I implements Structure.ByValue + { + } + }; + + // 单指时间段 + public static class STU_TIME_SECTION_I extends Structure + { + public int nStartHour; + public int nStartMinute; + public int nStartSecond; + public int nEndHour; + public int nEndMinute; + public int nEndSecond; + public int[] reserved = new int[2]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nStartHour", "nStartMinute", "nStartSecond", + "nEndHour", "nEndMinute", "nEndSecond", "reserved"}); + } + + public static class ByReference extends STU_TIME_SECTION_I implements Structure.ByReference + { + } + + public static class ByValue extends STU_TIME_SECTION_I implements Structure.ByValue + { + } + }; + + public static class STU_TIME_SECTION extends Structure + { + // 当表示录像时间段时,按位表示四个使能 + public int bEnable; + public int nStartHour; + public int nStartMinute; + public int nStartSecond; + public int nEndHour; + public int nEndMinute; + public int nEndSecond; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", + "nStartHour", "nStartMinute", "nStartSecond", + "nEndHour", "nEndMinute", "nEndSecond"}); + } + + public static class ByReference extends STU_TIME_SECTION implements Structure.ByReference + { + } + + public static class ByValue extends STU_TIME_SECTION implements Structure.ByValue + { + } + }; + + public static class STU_TIME_SECTION_SCHEDULE extends Structure + { + public byte bValue; // 该时段是否有效, 1 有效, 0 无效 + public byte[] reserved = new byte[3]; + public int nStartHour; // 开始时间-小时 + public int nStartMinute; // 开始时间-分钟 + public int nStartSecond; // 开始时间-秒 + public int nEndHour; // 结束时间-小时 + public int nEndMinute; // 结束时间-分钟 + public int nEndSecond; // 结束时间-秒 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nValue", "reserved", + "nStartHour", "nStartMinute", "nStartSecond", + "nEndHour", "nEndMinute", "nEndSecond"}); + } + + public static class ByReference extends STU_TIME_SECTION_SCHEDULE implements Structure.ByReference + { + } + + public static class ByValue extends STU_TIME_SECTION_SCHEDULE implements Structure.ByValue + { + } + }; + + public static class STU_TIME extends Structure + { + public int nYear; // 年 + public int nMonth; // 月 + public int nDay; // 日 + public int nHour; // 时 + public int nMinute; // 分 + public int nSecond; // 秒 + + public String toString() + { + return String.format("%04d/%02d/%02d %02d:%02d:%02d", nYear, nMonth, nDay, nHour, nMinute, nSecond); + } + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nYear", "nMonth", "nDay", "nHour", "nMinute", "nSecond"}); + } + + public static class ByReference extends STU_TIME implements Structure.ByReference + { + } + + public static class ByValue extends STU_TIME implements Structure.ByValue + { + } + }; + + public static class STU_TIME_EX extends Structure + { + public int nYear; // 年 + public int nMonth; // 月 + public int nDay; // 日 + public int nHour; // 时 + public int nMinute; // 分 + public int nSecond; // 秒 + public int nMillisecond; // 毫秒 + public int[] nReserved = new int[2]; // 保留字段 + + public String toString() + { + return String.format("%04d/%02d/%02d %02d:%02d:%02d %03d", nYear, nMonth, nDay, nHour, nMinute, nSecond, nMillisecond); + } + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nYear", "nMonth", "nDay", + "nHour", "nMinute", "nSecond", "nMillisecond", "nReserved"}); + } + + public static class ByReference extends STU_TIME_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_TIME_EX implements Structure.ByValue + { + } + }; + + ////////////////////////////////////////////////////////////////////////////////////// + //设备系统信息 + + // 设备信息 + public static class STU_SYS_DEVICE_INFO extends Structure + { + public byte[] szDeviceType = new byte[128]; // 设备类型 + public byte[] szDeviceClass = new byte[64]; // 设备类别 + public byte[] szSerialNumber = new byte[64]; // 设备序列号 + public byte[] reserved = new byte[1152]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "szDeviceType", "szDeviceClass", "szSerialNumber", "reserved"}); + } + + public static class ByReference extends STU_SYS_DEVICE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_SYS_DEVICE_INFO implements Structure.ByValue + { + } + }; + + // 软件版本信息 + public static class STU_SYS_SOFTWARE_VERSION extends Structure + { + public byte[] szVersion = new byte[32]; // 软件版本信息 + public byte[] szBuildDate = new byte[32]; // 版本发布时间 + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "szVersion", "szBuildDate", "reserved"}); + } + + public static class ByReference extends STU_SYS_SOFTWARE_VERSION implements Structure.ByReference + { + } + + public static class ByValue extends STU_SYS_SOFTWARE_VERSION implements Structure.ByValue + { + } + }; + + // 硬件版本信息 + public static class STU_SYS_HARDWARE_VERSION extends Structure + { + public byte[] szVersion = new byte[32]; // 硬件版本信息 + public byte[] szModel = new byte[32]; // model + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "szVersion", "szModel", "reserved"}); + } + + public static class ByReference extends STU_SYS_HARDWARE_VERSION implements Structure.ByReference + { + } + + public static class ByValue extends STU_SYS_HARDWARE_VERSION implements Structure.ByValue + { + } + }; + + // 处理器信息 + public static class STU_SYS_PROCESSOR_INFO extends Structure + { + public byte[] szModel = new byte[32]; // 处理器信息 + public byte[] szFrequency = new byte[16]; // 处理器频率 + public byte nUsage; // 处理器利用率(%) + public byte nTemperature; // 处理器温度(摄氏度) + public byte[] reserved1 = new byte[2]; // 字节对齐 + public byte[] reserved2 = new byte[60]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "szModel", "szFrequency", "nUsage", + "nTemperature", "reserved1", "reserved2"}); + } + + public static class ByReference extends STU_SYS_PROCESSOR_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_SYS_PROCESSOR_INFO implements Structure.ByValue + { + } + }; + + // 内存信息 + public static class STU_SYS_MEMORY_INFO extends Structure + { + public int nTotalSize; // 总大小(字节) + public int nFreeSize; // 空余大小(字节) + public byte[] reserved = new byte[64]; // 预留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nTotalSize", "nFreeSize", "reserved"}); + } + + public static class ByReference extends STU_SYS_MEMORY_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_SYS_MEMORY_INFO implements Structure.ByValue + { + } + }; + + // 系统信息 + public static class STU_SYS_INFO extends Structure + { + public int bAppAutoStart; // 应用程序是否自启动 + public int nSupportLangNum; // 支持的语言种数 + // 语言字符串,","分隔,如“SimpleChinese,English”,最大支持 32 种语言 + public byte[] szLanguages = new byte[NetDefs.MAX_LANGUAGE_LENGTH * NetDefs.MAX_LANGUAGE_NUM]; + public int nProcessorNum; // 处理器个数 + // 处理器信息数组(最大16个处理器信息) + public STU_SYS_PROCESSOR_INFO[] stuProcessorInfoArray = new STU_SYS_PROCESSOR_INFO[16]; + public STU_SYS_DEVICE_INFO stuDeviceInfo; // 设备信息 + public STU_SYS_SOFTWARE_VERSION stuSoftWareVer; // 软件信息 + public STU_SYS_HARDWARE_VERSION stuHardWareVer; // 硬件信息 + public STU_SYS_MEMORY_INFO stuMemoryInfo; // 内存信息 + public byte[] reserved = new byte[2048]; // 保留位 + + public STU_SYS_INFO() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] { "bAppAutoStart", "nSupportLangNum", "szLanguages", "nProcessorNum", + "stuProcessorInfoArray", "stuDeviceInfo", "stuSoftWareVer", "stuHardWareVer", "stuMemoryInfo", "reserved"}); + } + + public static class ByReference extends STU_SYS_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_SYS_INFO implements Structure.ByValue + { + } + } + + // 云加密套件配置信息 + public static class STU_CLOUD_CIPHER_SUITES extends Structure + { + public int nCipherType; // 加密算法类型 + public byte[] szSalt = new byte[128]; // 加密盐 + public int nCipherLength; // 加密数据长度 + public byte[] reserved = new byte[1024]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nCipherType", "szSalt", "nCipherLength", "reserved"}); + } + + public static class ByReference extends STU_CLOUD_CIPHER_SUITES implements Structure.ByReference + { + } + + public static class ByValue extends STU_CLOUD_CIPHER_SUITES implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 新零售商品/货柜信息 + + // 货品信息 + public static class STU_GOODS_INFO extends Structure + { + // 货品类型 + public byte[] szGoodType = new byte[32]; + // 货品编号 + public int nGoodsNo; + // 货品名 + public byte[] szGoodsName = new byte[128]; + // 预留参数 + public byte[] reserved = new byte[128]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "szGoodType", "nGoodsNo", "szGoodsName", "reserved"}); + } + + public static class ByReference extends STU_GOODS_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_GOODS_INFO implements Structure.ByValue + { + } + } + + // 货品信息集合 + public static class STU_GOODS_INFOS extends Structure + { + // 货格内货品数量,最大 MAX_GOODS_IN_CONTAINER_COUNT 个 + public int nGoodsCount; + // 货格内货品信息数组 + public STU_GOODS_INFO[] stGoodsInfos = new STU_GOODS_INFO[NetDefs.MAX_GOODS_IN_CONTAINER_COUNT]; + + public STU_GOODS_INFOS() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] { "nGoodsCount", "stGoodsInfos"}); + } + + public static class ByReference extends STU_GOODS_INFOS implements Structure.ByReference + { + } + + public static class ByValue extends STU_GOODS_INFOS implements Structure.ByValue + { + } + } + + // 货格位置信息 + public static class STU_GOODS_CONTAINER_POSITION extends Structure + { + // 货格行号,0表示未正确摆放在货格内 + public int nRow; + // 货格列号,0表示未正确摆放在货格内 + public int nColumn; + // 货格位置,不规则区块,相对坐标,uint取值范围:0~8191 + public STU_POLY_POINTS stPolyPos = new STU_POLY_POINTS(); + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nRow", "nColumn", "stPolyPos"}); + } + + public static class ByReference extends STU_GOODS_CONTAINER_POSITION implements Structure.ByReference + { + } + + public static class ByValue extends STU_GOODS_CONTAINER_POSITION implements Structure.ByValue + { + } + } + + // 货柜信息 + public static class STU_GOODS_CONTAINER_INFO extends Structure + { + // 货格位置信息 + public STU_GOODS_CONTAINER_POSITION stPosition = new STU_GOODS_CONTAINER_POSITION(); + // 货品信息集合 + public STU_GOODS_INFOS stGoodsInfos = new STU_GOODS_INFOS(); + // 预留参数 + public byte[] reserved = new byte[128]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "stPosition", "stGoodsInfos", "reserved"}); + } + + public static class ByReference extends STU_GOODS_CONTAINER_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_GOODS_CONTAINER_INFO implements Structure.ByValue + { + } + } + + // 货柜内物品替换信息 + public static class STU_GOODS_CONTAINER_REPLACEMENT_INFO extends Structure + { + // 货格位置信息 + public STU_GOODS_CONTAINER_POSITION stPosition = new STU_GOODS_CONTAINER_POSITION(); + // 新货品信息集合 + public STU_GOODS_INFOS stNewGoodsInfos = new STU_GOODS_INFOS(); + // 旧货品信息集合 + public STU_GOODS_INFOS stOldGoodsInfos = new STU_GOODS_INFOS(); + // 预留参数 + public byte[] reserved = new byte[128]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "stPosition", "stNewGoodsInfos", "stOldGoodsInfos", "reserved"}); + } + + public static class ByReference extends STU_GOODS_CONTAINER_REPLACEMENT_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_GOODS_CONTAINER_REPLACEMENT_INFO implements Structure.ByValue + { + } + } + + // 货品未正确完整摆放在货格内时上报信息 + public static class STU_GOODS_OUT_OF_REGION_INFO extends Structure + { + // 货品信息 + public STU_GOODS_INFO stGoodsInfo = new STU_GOODS_INFO(); + // 货品位置,不规则区块,相对坐标,uint取值范围:0~8191 + public STU_POLY_POINTS stPolyPos = new STU_POLY_POINTS(); + // 与货品区域有相交的货格数量,最多与 MAX_GOODS_OUT_OF_REGION_COUNT 个相交 + public int nOverlapContainerCount; + // 与货品区域有相交的货格位置信息 + public STU_GOODS_CONTAINER_POSITION[] stPositions = new STU_GOODS_CONTAINER_POSITION[NetDefs.MAX_GOODS_OUT_OF_REGION_COUNT]; + // 预留参数 + public byte[] reserved = new byte[128]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "stGoodsInfo", "stPolyPos", "nOverlapContainerCount", + "stPositions", "reserved"}); + } + + public static class ByReference extends STU_GOODS_OUT_OF_REGION_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_GOODS_OUT_OF_REGION_INFO implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + //事件/报警结构体定义 + public static class STU_EVENT_COMMON_INFO extends Structure + { + public byte nPicType; // 图片类型 1、普通;2、合成;3、抠图 + public byte[] reserved1 = new byte[3]; // 保留字段 + public STU_RESOLUTION stuResolution; // 分辨率信息 + public byte[] szMachineAddress = new byte[256]; // 事件/报警发生地点 + public byte[] szSerialNumber = new byte[128]; // 设备序列号 + public byte[] reserved = new byte[632]; // 保留字段 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nPicType", "reserved1", "stuResolution", + "szMachineAddress", "szSerialNumber", "reserved"}); + } + + public static class ByReference extends STU_EVENT_COMMON_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_COMMON_INFO implements Structure.ByValue + { + } + }; + + // 门禁访问信息(门禁产品专用) + public static class STU_EVENT_DOOR_ACCESS_INFO extends Structure + { + public byte nPassResult; // 通行结果 + // 0 : 未知错误 + // 1 : 通行成功。 + // 2 : 访客时段不符。 + // 3 : 未配置权限组。 + // 4 : 未配置时段。 + // 9 : 黑名单。 + // 14 : 门处常开状态。 + // 15 : 门处常闭状态。 + // 16 : 陌生人 + // 20 :体温异常 + public byte[] reserved = new byte[63]; // 预留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nPassResult", "reserved"}); + } + + public static class ByReference extends STU_EVENT_DOOR_ACCESS_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_DOOR_ACCESS_INFO implements Structure.ByValue + { + } + }; + + public static class STU_EVENT_FACE_INFO extends Structure + { + public int nObjcetID; // 物体唯一标识 ID + public byte[] szObjectType = new byte[32]; // 物体类型描述 + public STU_RECT_L stuBoundingBox; // 包围盒 + public byte nBelief; // 清晰度[0-255] 值越大表示清晰 + public byte nQuality; // 质量度[0-255] 值越大质量越好 + public byte[] reserved1 = new byte[2]; // 字节对齐 + public float fBlur; // 模糊度, 0 表示最清晰,值越大越模糊 + public float fPosePitch; // 上下俯仰角度 + public float fPoseRoll; // 左右摇摆角度 + public float fPoseYaw; // 水平旋转角度 + public int emSexType; // 性别类型,EM_SEX_TYPE + public int emMinorityType; // 民族类型,EM_MINORITY_TYPE + public int nAge; // 年龄 + public byte nWearMask; // 是否戴口罩 0-未知 1-戴口罩 2-不戴口罩 + public byte nWearHat; // 是否戴帽子 0-未知 1-戴帽子 2-不戴帽子 + public byte nWearGlasses; // 是否戴眼镜 0-未知 1-戴眼镜 2-不戴眼镜 + public byte nExpression; // 表情 0-未知 1-正常 2-微笑 3-大笑 + public byte nTrackStatus; // 物体跟踪状态 0-未知 1-新建 2-更新 3-消失 + public int nBase64FeatureLen; // 人脸特征值字符串长度 + public Pointer pszBase64Feature; // 人脸特征值 String,base64编码格式,最优模式下,选择抽取特征值时,有该字段;主要在人脸大图和人脸抠图事件中使用 + public byte[] szFeatureVersion = new byte[64]; // 人脸特征值版本号 最优模式下,选择抽取特征值时,有该字段,主要在人脸大图和人脸抠图中有该字段 + public float fTemperature; // 体温 + public int iTemperatureAlarm; // 体温报警状态,0-未布控,1-体温正常,2-高体温报警 + public byte[] reserved2 = new byte[1016]; // 保留字段 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nObjcetID", "szObjectType", "stuBoundingBox", "nBelief", "nQuality", + "reserved1", "fBlur", "fPosePitch", "fPoseRoll", "fPoseYaw", "emSexType", "emMinorityType", "nAge", + "nWearMask", "nWearHat", "nWearGlasses", "nExpression", "nTrackStatus", "nBase64FeatureLen", + "pszBase64Feature", "szFeatureVersion", "fTemperature", "iTemperatureAlarm", "reserved2"}); + } + + public static class ByReference extends STU_EVENT_FACE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_FACE_INFO implements Structure.ByValue + { + } + }; + + public static class STU_EVENT_FACE_INFO_EX extends Structure + { + public int nObjcetID; // 物体唯一标识 ID + public byte[] szObjectType = new byte[32]; // 物体类型描述 + public STU_RECT_I stuBoundingBox; // 包围盒 + public byte nBelief; // 清晰度[0-255] 值越大表示清晰 + public byte nQuality; // 质量度[0-255] 值越大质量越好 + public byte[] reserved1 = new byte[2]; // 字节对齐 + public float fBlur; // 模糊度, 0 表示最清晰,值越大越模糊 + public float fPosePitch; // 上下俯仰角度 + public float fPoseRoll; // 左右摇摆角度 + public float fPoseYaw; // 水平旋转角度 + public int emSex; // 性别类型,EM_SEX_TYPE + public int emMinority; // 民族类型,EM_MINORITY_TYPE + public int nAge; // 年龄 + public byte nWearMask; // 是否戴口罩 0-未知 1-戴口罩 2-不戴口罩 + public byte nWearHat; // 是否戴帽子 0-未知 1-戴帽子 2-不戴帽子 + public byte nWearGlasses; // 是否戴眼镜 0-未知 1-戴眼镜 2-不戴眼镜 + public byte nExpression; // 表情 0-未知 1-正常 2-微笑 3-大笑 + public byte nTrackStatus; // 物体跟踪状态 0-未知 1-新建 2-更新 3-消失 + public int nBase64FeatureLen; // 人脸特征值字符串长度 + public Pointer pszBase64Feature; // 人脸特征值 String,base64编码格式,最优模式下,选择抽取特征值时,有该字段;主要在人脸大图和人脸抠图事件中使用 + public byte[] szFeatureVersion = new byte[64]; // 人脸特征值版本号 最优模式下,选择抽取特征值时,有该字段,主要在人脸大图和人脸抠图中有该字段 + public float fTemperature; // 体温 + public int iTemperatureAlarm; // 体温报警状态,0-未布控,1-体温正常,2-高体温报警,3-低体温报警,4-未测到温度(不在测温区域) + public byte[] reserved2 = new byte[171]; // 保留字段 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nObjcetID", "szObjectType", "stuBoundingBox", + "nBelief", "nQuality", "reserved1", "fBlur", "fPosePitch", "fPoseRoll", "fPoseYaw", + "emSex", "emMinority", "nAge", "nWearMask", "nWearHat", "nWearGlasses", + "nExpression", "nTrackStatus", "nBase64FeatureLen", "pszBase64Feature", "szFeatureVersion", + "fTemperature", "iTemperatureAlarm", "reserved2"}); + } + + public static class ByReference extends STU_EVENT_FACE_INFO_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_FACE_INFO_EX implements Structure.ByValue + { + } + }; + + public static class STU_EVENT_PERSON_EXTINFO extends Structure + { + int nPersonType; // 1 - 普通员工,2 - 访客, 3 - 黑名单 + // (该字段目前只有面板机支持) + public byte[] szCustom = new byte[128]; // 自定义信息字段 + int nHealthCode; // 0 - 未布控,1 - 绿码,2 - 黄码,3 - 红码,4 - 橙码 + // (该字段目前只有面板机支持) + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nPersonType", "szCustom", "nHealthCode"}); + } + + public static class ByReference extends STU_EVENT_PERSON_EXTINFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_PERSON_EXTINFO implements Structure.ByValue + { + } + }; + + public static class STU_EVENT_PERSON_INFO extends Structure + { + public int nPersonID; // 人员 ID + public byte[] szName = new byte[128]; // 人脸图别名 + public int emSexType; // 性别,EM_SEX_TYPE + public STU_TIME stBirthday; // 生日 + public byte[] szCertificateType = new byte[64]; // 证件类型 + public byte[] szID = new byte[128]; // 证件 ID + public Pointer lpstPersonExtInfo; // 扩展字段,STU_EVENT_PERSON_EXTINFO + public byte[] reserved1= new byte[24]; // 保留参数1 + public byte[] szCountry = new byte[64]; // 国别 + public byte[] szProvince = new byte[64]; // 省份 + public byte[] szCity = new byte[128]; // 所在城市 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nPersonID", "szName", "emSexType", "stBirthday", + "szCertificateType", "szID", "lpstPersonExtInfo", "reserved1", "szCountry", "szProvince", "szCity"}); + } + + public static class ByReference extends STU_EVENT_PERSON_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_PERSON_INFO implements Structure.ByValue + { + } + }; + + public static class STU_EVENT_FACE_RECOGNIZE_INFO extends Structure + { + public byte[] szFaceToken = new byte[64]; // 人脸标识符 + public float fSearchScore; // 人脸识别评分 [0-100] + public float fSearchThreshold; // 人脸识别阈值 [0-100] + public STU_EVENT_PERSON_INFO stPersonInfo; // 人脸相关的人员信息 + public float fLivenessScore; // 活体得分 + public float fLivenessThreshold; // 活体阈值 + public byte[] reserved = new byte[56]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "szFaceToken", "fSearchScore", + "fSearchThreshold", "stPersonInfo", "fLivenessScore", "fLivenessThreshold", + "reserved"}); + } + + public static class ByReference extends STU_EVENT_FACE_RECOGNIZE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_FACE_RECOGNIZE_INFO implements Structure.ByValue + { + } + }; + + public static class STU_EVENT_FACE_RECOGNIZE_GROUP extends Structure + { + public byte[] szGroupAlias = new byte[128]; // 组别名 + public int nGroupType; // 底库类别, 0-白名单; 1-灰名单; 2-黑名单 + public byte[] reserved = new byte[124]; // 预留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "szGroupAlias", "nGroupType", "reserved" }); + } + + public static class ByReference extends STU_EVENT_FACE_RECOGNIZE_GROUP implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_FACE_RECOGNIZE_GROUP implements Structure.ByValue + { + } + }; + + public static class STU_EVENT_FACE_RECOGNIZE_RECORD extends Structure + { + public int nPass; // 是否识别通过,0-不通过,1-通过 + public STU_EVENT_FACE_RECOGNIZE_GROUP stuFaceGroup; // 人脸识别相关底库信息 + public int nFaceRecognizeInfoCount; // 实际人脸识别结果数目 + // 人脸识别结果数组 + public STU_EVENT_FACE_RECOGNIZE_INFO[] stFaceRecognizeInfoArr = new STU_EVENT_FACE_RECOGNIZE_INFO[NetDefs.MAX_FACE_REC_INFO_NUM]; + + public STU_EVENT_FACE_RECOGNIZE_RECORD() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] { "nPass", "stuFaceGroup", "nFaceRecognizeInfoCount", "stFaceRecognizeInfoArr" }); + } + + public static class ByReference extends STU_EVENT_FACE_RECOGNIZE_RECORD implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_FACE_RECOGNIZE_RECORD implements Structure.ByValue + { + } + }; + + // 人脸识别身份证信息 + public static class STU_EVENT_FACE_IDCARD_INFO extends Structure + { + public byte[] szName = new byte[128]; // 人员姓名 + public byte[] szCode = new byte[128]; // 证件编号 + + public byte[] szNation = new byte[64]; // 民族 + public byte[] szAddress = new byte[128]; // 地址描述 + public byte[] szOffice = new byte[128]; // 签发机关描述 + + public byte[] reserved1 = new byte[512]; // 保留位 + + public int emSex; // 性别, EM_SEX_TYPE + + public STU_TIME_EX stuStartTime; // 证件有效期开始时间 + public STU_TIME_EX stuEndTime; // 证件有效期结束时间 + + public int nWidth; // 证件图片宽度 + public int nHeight; // 证件图片高度 + public Pointer pProfilePic; // 证件图片 base64 编码的字符串数据 + public int nProfilePicLen; // 证件图片数据大小 + + public STU_TIME stuBirthday; // 生日信息 + + public byte[] reserved = new byte[488]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "szName", "szCode", "szNation", + "szAddress", "szOffice", "reserved1", "emSex", "stuStartTime", + "stuEndTime", "nWidth", "nHeight", "pProfilePic", "nProfilePicLen", + "stuBirthday", "reserved"}); + } + + public static class ByReference extends STU_EVENT_FACE_IDCARD_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_FACE_IDCARD_INFO implements Structure.ByValue + { + } + }; + + // 人体信息 + public static class STU_EVENT_BODY_INFO extends Structure + { + public int nObjectID; // 人体 ID + public byte[] szObjectType = new byte[32]; // 物体类型 + public STU_RECT_I stuBoundingBox; // 包围盒 + public byte nClothesUpSleeve; // 上衣特征 0-未知 1-短袖 2-长袖 + public byte nClothesUpColor; // 上衣颜色 + // 0-未知 1-黑色 2-白色 3-灰色 + // 4-红色 5-橙色 6-黄色 7-绿色 + // 8-深蓝色 9-浅蓝色 10-紫色 11-粉红色 + // 12-棕色 13-彩色 + public byte nPaintsLen; // 裤子特征 0-未知 1-短裤 2-长裤 + public byte nPaintsColor; // 裤子颜色 + // 0-未知 1-黑色 2-白色 3-灰色 + // 4-红色 5-橙色 6-黄色 7-绿色 + // 8-深蓝色 9-浅蓝色 10-紫色 11-粉红色 + // 12-棕色 13-彩色 + public byte nRideBike; // 骑自行车状态 0-未知 1-骑车 2-不骑车 + public byte nBagCarry; // 背包状态 0-未知 1-背包 2-未背包 + public byte nHatWore; // 戴帽子状态 0-未知 1-戴帽子 2-不戴帽子 + public byte[] reserved = new byte[1017]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nObjectID", "szObjectType", "stuBoundinBox", + "nClothesUpSleeve", "nClothesUpColor", "nPaintsLen", "nPaintsColor", "nRideBike", + "nBagCarry", "nHatWore", "reserved" }); + } + + public static class ByReference extends STU_EVENT_BODY_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_BODY_INFO implements Structure.ByValue + { + } + }; + + // 门禁刷卡事件 - 身份证信息 + public static class STU_DOOR_CARD_DETECT_ID_CARD_INFO extends Structure + { + public byte[] szName = new byte[128]; // 人员姓名 + public int emSex; // 性别,EM_SEX_TYPE + public byte[] szNation = new byte[128]; // 民族 + public STU_TIME stuBirthday; // 生日 + public byte[] szAddress = new byte[128]; // 地址 + public byte[] szOffice = new byte[128]; // 签发机关 + public STU_TIME stuValidTimeStart; // 有效期 开始日期 + public STU_TIME stuValidTimeStop; // 有效期 结束日期 + public byte[] reserved = new byte[512]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szName", "emSex", "szNation", + "stuBirthday", "szAddress", "szOffice", "stuValidTimeStart", + "stuValidTimeStop", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CARD_DETECT_ID_CARD_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CARD_DETECT_ID_CARD_INFO implements Structure.ByValue + { + } + } + + // 刷卡信息 + public static class STU_EVENT_CARD_DETECT_INFO extends Structure + { + public byte[] szCardType = new byte[64]; // IC: 普通卡,ID:身份证 + public byte[] szCardNo = new byte[128]; // 卡号 + public byte[] szCode = new byte[128]; // 此卡绑定的人员ID + public int nAccessRecord; // 通行结果 + // 0 : 未知错误 + // 1 : 通行成功 + // 2 : 访客时段不符 + // 3 : 未配置权限组 + // 4 : 未配置时段 + // 5 : 时段检验失败 + // 8 : 通行操作超时 + // 9 : 黑名单 + // 10 : 无效卡 + // 11 : 通行时段不符 + // 12 : 通行方式不符 + // 14 : 门处常开状态 + // 15 : 门处常闭状态 + // 17 : 通行成功(未佩戴安全帽) + // 18 : 通行失败(未佩戴安全帽) + // 19 : 无匹配卡 + public STU_DOOR_CARD_DETECT_ID_CARD_INFO stIDInfo; // 身份证信息, szCardType为ID时有效 + public byte[] reserved = new byte[1024]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "szCardType", "szCardNo", "szCode", + "nAccessRecord", "stIDInfo", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CARD_DETECT_ID_CARD_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CARD_DETECT_ID_CARD_INFO implements Structure.ByValue + { + } + }; + + // 开门事件触发信息 + public static class STU_EVENT_DOOROPEN_TRIGGER_INFO extends Structure + { + public byte[] szIP = new byte[128]; // 开门事件触发IP + public byte[] szName = new byte[128]; // 开门事件触发用户账号 + public byte[] szType = new byte[128]; // 开门事件触发类型 + public STU_TIME stuTime; // 开门事件触发时间 + public byte[] reserved = new byte[1024]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "szIP", "szName", "szType", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_EVENT_DOOROPEN_TRIGGER_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_DOOROPEN_TRIGGER_INFO implements Structure.ByValue + { + } + }; + + ///////////////////////////////////////////////////////////////////////////////////////////////////// + //FACE + ///////////////////////////////////////////////////////////////////////////////////////////////////// + + // 手动抓拍参数 + public static class STU_MANUALSNAP_IN_PARAM extends Structure + { + // 分辨率, EM_VIDEO_STREAM_RESOLUTION_TYPE + public int emResolution; + // 抓拍张数,目前只支持1张,<=0时,按默认1张抓拍 + public int nSnapTimes; + // 多张图片的帧间隔,Times大于1时有效 + public int nFramePeriod; + // 分辨率宽高是否互换,如D1对应的分辨率是704*576,互换后为576*704 + public int bExchange; + // 保留字段 + public byte[] reserved = new byte[256]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "emResolution", "nSnapTimes", + "nFramePeriod", "bExchange", "reserved"}); + } + + public static class ByReference extends STU_MANUALSNAP_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_MANUALSNAP_IN_PARAM implements Structure.ByValue + { + } + }; + + //手动抓拍 + public static class STU_EVENT_MANUAL_SNAP extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved1 = new byte[64]; // 保留字节1 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息描述 + public byte[] reserved2 = new byte[256]; // 保留字段2 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "szTimeZone", "nTimeZoneMS", "stuTime", + "reserved1", "stuCommInfo", "reserved2" }); + } + + public static class ByReference extends STU_EVENT_MANUAL_SNAP implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_MANUAL_SNAP implements Structure.ByValue + { + } + }; + + // 按时间获取抓拍图片结构体 + public static class STU_QUERY_SNAPSHOTS_BYTIME_IN_PARAM extends Structure + { + public byte[] szAddress = new byte[128]; // 上送地址 + public STU_TIME_EX stuStartTime; // 开始时间 + public STU_TIME_EX stuEndTime; // 结束时间 + public byte[] reserved = new byte[256]; // 保留字段 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "szAddress", "stuStartTime", "stuEndTime", "reserved" }); + } + + public static class ByReference extends STU_QUERY_SNAPSHOTS_BYTIME_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_QUERY_SNAPSHOTS_BYTIME_IN_PARAM implements Structure.ByValue + { + } + }; + + //N-人脸检测-背景全图 + public static class STU_EVENT_FACE_SNAP_WHOLE extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public short nFaceCount; // 大图内的人脸个数 + // 人脸抠图信息数组,每次背景图只对应一张人脸图 + public STU_EVENT_FACE_INFO.ByReference[] stuFaceInfoArray = new STU_EVENT_FACE_INFO.ByReference[1]; + public STU_TIME_EX stuTime; // 事件时间 + public int nFirstObjectID; // 第一个抠图的物体 ID 号 + public int nLastObjectID; // 最后一个抠图的物体 ID 号 + public byte[] reserved1 = new byte[212]; // 保留字节1 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息描述 + public byte[] reserved2 = new byte[1024]; // 保留字段2 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "szTimeZone", "nTimeZoneMS", "nFaceCount", + "pstuFaceInfoArray", "stuTime", "nFirstObjectID", "nLastObjectID", "reserved1", "stuCommInfo", "reserved2" }); + } + + public static class ByReference extends STU_EVENT_FACE_SNAP_WHOLE implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_FACE_SNAP_WHOLE implements Structure.ByValue + { + } + }; + + //N-人脸检测-人脸抠图 + public static class STU_EVENT_FACE_SNAP_PART extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留字段1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_EVENT_FACE_INFO stuFaceInfo; // 人脸信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息描述 + public byte[] reserved3 = new byte[1024]; // 保留字段3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuFaceInfo", "stuCommInfo", "reserved3" }); + } + + public static class ByReference extends STU_EVENT_FACE_SNAP_PART implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_FACE_SNAP_PART implements Structure.ByValue + { + } + }; + + //N-人脸识别-人脸背景图 EventFaceRecognizeWhole + public static class STU_EVENT_FACE_RECOGNIZE_WHOLE extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留字段1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public int nObjectID; // 物体 ID + public int nFaceRecognizeRecCount; // 人脸识别记录信息数组大小 + // 人脸识别记录数组 + public STU_EVENT_FACE_RECOGNIZE_RECORD[] stuFaceRecognizeRecArr = new STU_EVENT_FACE_RECOGNIZE_RECORD[NetDefs.MAX_FACE_GROUP_NUM]; + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息描述 + public int nPass; // 人脸识别是否通过, -1 表示获取异常 0-正常比对不通过 1-正常比对通过 2-活体比对不通过 + public STU_EVENT_FACE_INFO_EX stuFaceInfo; // 人脸信息 + public STU_EVENT_DOOR_ACCESS_INFO stuDoorAccessInfo; // 门禁访问信息(门禁产品专用) + public byte[] reserved = new byte[104]; // 保留位 + + public STU_EVENT_FACE_RECOGNIZE_WHOLE() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] { + "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", + "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "nObjectID", "nFaceRecognizeRecCount", + "stuFaceRecognizeRecArr", "stuCommInfo", "nPass", "stuFaceInfo", + "stuDoorAccessInfo", "reserved"}); + } + + public static class ByReference extends STU_EVENT_FACE_RECOGNIZE_WHOLE implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_FACE_RECOGNIZE_WHOLE implements Structure.ByValue + { + } + }; + + //N-人脸识别-人脸抠图 + public static class STU_EVENT_FACE_RECOGNIZE_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留字段1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public int nObjectID; // 物体 ID + public byte[] szFaceGroupAlias = new byte[128]; // 人脸库别名 + public int nPass; // 人脸识别是否通过 -1 表示获取异常 0-正常比对不通过 1-正常比对通过 2-活体比对不通过 + public int nGroupType; // 人脸库类型 0-白名单; 1-灰名单; 2-黑名单 + public byte[] reserved2 = new byte[60]; // 保留字节2 + public int nFaceRecognizeInfoCount; // 实际人脸识别结果数目 + // 人脸识别结果数组 + public STU_EVENT_FACE_RECOGNIZE_INFO[] stFaceRecognizeInfoArr = new STU_EVENT_FACE_RECOGNIZE_INFO[NetDefs.MAX_FACE_REC_INFO_NUM]; + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息描述 + public STU_EVENT_FACE_INFO_EX stuFaceInfo; // 人脸信息 + public STU_EVENT_DOOR_ACCESS_INFO stuDoorAccessInfo; // 门禁访问信息(门禁产品专用) + public byte[] reserved3 = new byte[620]; // 保留字段3 + + public STU_EVENT_FACE_RECOGNIZE_CUTOUT() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] { + "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", + "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "nObjectID", "szFaceGroupAlias", "nPass", + "nGroupType", "reserved2", "nFaceRecognizeInfoCount", "stFaceRecognizeInfoArr", + "stuCommInfo", "stuFaceInfo", "stuDoorAccessInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_FACE_RECOGNIZE_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_FACE_RECOGNIZE_CUTOUT implements Structure.ByValue + { + } + }; + + // N-身份证上报事件 + public static class STU_EVENT_FACE_IDCARD_RECOGNIZE extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public byte[] reserved1 = new byte[128]; // 预留位1 + public STU_TIME_EX stuTime; // 事件时间 + public int nObjectID; // 物体 ID + public int nPass; // 人脸识别是否通过 -1 表示获取异常 0-正常比对不通过 1-正常比对通过 2-活体比对不通过 + public float fSearchScore; // 人脸识别评分 + public byte[] reserved2 = new byte[128]; // 保留字节2 + public STU_EVENT_FACE_INFO_EX stuFaceInfo; // 人脸信息 + public STU_EVENT_FACE_IDCARD_INFO stuIDCardInfo; // ID 卡号信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息描述 + public byte[] reserved3 = new byte[1024]; // 保留字段3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nGroupID", "nIndexInGroup", + "nCountInGroup", "szEvent", "szClass", "szAction", "reserved1", + "stuTime", "nObjectID", "nPass", "fSearchScore", "reserved2", + "stuFaceInfo", "stuIDCardInfo", "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_FACE_IDCARD_RECOGNIZE implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_FACE_IDCARD_RECOGNIZE implements Structure.ByValue + { + } + }; + + // N-身份证上报事件Ex + public static class STU_EVENT_FACE_AND_CARDS_COMPARE extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public byte[] reserved1 = new byte[128]; // 预留位1 + public STU_TIME_EX stuTime; // 事件时间 + public int nObjectID; // 物体 ID + public int nPass; // 人脸识别是否通过 -1 表示获取异常 0-正常比对不通过 1-正常比对通过 2-活体比对不通过 + public float fSearchScore; // 人脸识别评分 + public byte[] reserved2 = new byte[128]; // 保留字节2 + public STU_EVENT_FACE_INFO_EX stuFaceInfo; // 人脸信息 + public STU_EVENT_FACE_IDCARD_INFO stuCardInfo; // ID 卡号信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息描述 + public byte[] reserved3 = new byte[1024]; // 保留字段3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nGroupID", "nIndexInGroup", + "nCountInGroup", "szEvent", "szClass", "szAction", "reserved1", + "stuTime", "nObjectID", "nPass", "fSearchScore", "reserved2", + "stuFaceInfo", "stuCardInfo", "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_FACE_AND_CARDS_COMPARE implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_FACE_AND_CARDS_COMPARE implements Structure.ByValue + { + } + }; + + // 人形抓拍抠图 + public static class STU_EVENT_BODY_SNAP_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public byte[] reserved1 = new byte[128]; // 预留位1 + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[128]; // 保留字节2 + public STU_EVENT_BODY_INFO stuBodyInfo; // 人体信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息描述 + public byte[] reserved3 = new byte[1024]; // 保留字段3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nGroupID", "nIndexInGroup", + "nCountInGroup", "szEvent", "szClass", "szAction", "reserved1", + "stuTime", "reserved2", "stuBodyInfo", "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_BODY_SNAP_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_BODY_SNAP_CUTOUT implements Structure.ByValue + { + } + }; + + //人形抓拍大图事件 + public static class STU_EVENT_BODY_SNAP_WHOLE extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留字段1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[128]; // 保留字节2 + public int nFaceCount; //大图内人脸个数 + public STU_EVENT_FACE_INFO[] stuFaces = new STU_EVENT_FACE_INFO[10]; //人脸信息 + public int nBodyCount; //大图内人形个数 + public STU_EVENT_BODY_INFO[] stuBodys = new STU_EVENT_BODY_INFO[10]; // 人体信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息描述 + public byte[] reserved3 = new byte[1024]; // 保留字段3 + } + + // 刷卡抓拍事件 + public static class STU_EVENT_CARD_DETECT_SNAPSHOT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public byte[] reserved1 = new byte[128]; // 预留位1 + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[128]; // 保留字节2 + public STU_EVENT_CARD_DETECT_INFO stuCardDetectInfo; // 刷卡检测信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息描述 + public byte[] reserved3 = new byte[1024]; // 保留字段3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nGroupID", "nIndexInGroup", + "nCountInGroup", "szEvent", "szClass", "szAction", "reserved1", + "stuTime", "reserved2", "stuCardDetectInfo", "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_CARD_DETECT_SNAPSHOT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_CARD_DETECT_SNAPSHOT implements Structure.ByValue + { + } + }; + + // 开门抓拍事件 + public static class STU_EVENT_DOOR_OPEN_SNAPSHOT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szAction = new byte[64]; // 动作类型 + public byte[] reserved1 = new byte[128]; // 预留位1 + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[128]; // 保留字节2 + public STU_EVENT_DOOROPEN_TRIGGER_INFO stuTiggerInfo; // 开门事件触发信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息描述 + public byte[] reserved3 = new byte[1024]; // 保留字段3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nGroupID", "nIndexInGroup", + "nCountInGroup", "szEvent", "szAction", "reserved1", "stuTime", + "reserved2", "stuTiggerInfo", "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_DOOR_OPEN_SNAPSHOT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_DOOR_OPEN_SNAPSHOT implements Structure.ByValue + { + } + }; + + ///////////////////////////////////////////////////////////////////////////////////////////////////// + //Garbage + ///////////////////////////////////////////////////////////////////////////////////////////////////// + // 丢垃圾检测大图 + public static class STU_EVENT_GARBAGE_CAPTURE_WHOLE extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留字段1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public int nObjcetID; // 物体唯一标识 ID + public byte[] szObjectType = new byte[32];// 物体类型描述 + public STU_RECT_L stuBoundingBox; // 包围盒 + public byte nBelief; // 清晰度[0-255] 值越大表示清晰 + public STU_TIME_EX stuTime; // 事件时间 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息描述 + public byte[] reserved2 = new byte[1024]; // 保留字段2 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", "szEvent", + "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", "nTimeZoneMS", "nObjcetID","szObjectType", + "stuBoundingBox", "nBelief", "stuTime", "stuCommInfo", "reserved2"}); + } + + public static class ByReference extends STU_EVENT_GARBAGE_CAPTURE_WHOLE implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_GARBAGE_CAPTURE_WHOLE implements Structure.ByValue + { + } + } + + // 丢垃圾检测抠图 + public static class STU_EVENT_GARBAGE_CAPTURE_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留字段1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public int nObjcetID; // 物体唯一标识 ID + public byte[] szObjectType = new byte[32];// 物体类型描述 + public STU_RECT_L stuBoundingBox; // 包围盒 + public byte nBelief; // 清晰度[0-255] 值越大表示清晰 + public STU_TIME_EX stuTime; // 事件时间 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息描述 + public byte[] reserved2 = new byte[1024]; // 保留字段2 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", "szEvent", + "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", "nTimeZoneMS", "nObjcetID","szObjectType", + "stuBoundingBox", "nBelief", "stuTime", "stuCommInfo", "reserved2"}); + } + + public static class ByReference extends STU_EVENT_GARBAGE_CAPTURE_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_GARBAGE_CAPTURE_CUTOUT implements Structure.ByValue + { + } + } + + // 乱丢垃圾的人大图 + public static class STU_EVENT_GARBAGE_MAN_WHOLE extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留字段1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public int nObjcetID; // 物体唯一标识 ID + public byte[] szObjectType = new byte[32];// 物体类型描述 + public STU_RECT_L stuBoundingBox; // 包围盒 + public byte nBelief; // 清晰度[0-255] 值越大表示清晰 + public STU_TIME_EX stuTime; // 事件时间 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息描述 + public byte[] reserved2 = new byte[1024]; // 保留字段2 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", "szEvent", + "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", "nTimeZoneMS", "nObjcetID","szObjectType", + "stuBoundingBox", "nBelief", "stuTime", "stuCommInfo", "reserved2"}); + } + + public static class ByReference extends STU_EVENT_GARBAGE_MAN_WHOLE implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_GARBAGE_MAN_WHOLE implements Structure.ByValue + { + } + } + + // 乱丢垃圾的人抠图 + public static class STU_EVENT_GARBAGE_MAN_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留字段1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public int nObjcetID; // 物体唯一标识 ID + public byte[] szObjectType = new byte[32];// 物体类型描述 + public STU_RECT_L stuBoundingBox; // 包围盒 + public byte nBelief; // 清晰度[0-255] 值越大表示清晰 + public STU_TIME_EX stuTime; // 事件时间 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息描述 + public byte[] reserved2 = new byte[1024]; // 保留字段2 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", "szEvent", + "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", "nTimeZoneMS", "nObjcetID","szObjectType", + "stuBoundingBox", "nBelief", "stuTime", "stuCommInfo", "reserved2"}); + } + + public static class ByReference extends STU_EVENT_GARBAGE_MAN_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_GARBAGE_MAN_CUTOUT implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////// + //Traffic + ///////////////////////////////////////////////////////////////////////////////////////////////////// + + //交通公共信息 + public static class STU_TRAFFIC_COMMON_INFO extends Structure + { + // 车道号(设备中的自定义车道号) + public int nLane; + // 速度 单位Km/h + public int nSpeed; + // 车道方向,EM_TRAFFIC_LANE_DIRECTION + public int emDirection; + // 限速下限 Km/h + public int nSpeedLowLimit; + // 限速上限 Km/h + public int nSpeedUpLimit; + // 保留位 + public byte[] reserved = new byte[2548]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nLane", "nSpeed", "emDirection", + "nSpeedLowLimit", "nSpeedUpLimit", "reserved"}); + } + + public static class ByReference extends STU_TRAFFIC_COMMON_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_TRAFFIC_COMMON_INFO implements Structure.ByValue + { + } + }; + + //交通物体信息 + public static class STU_TRAFFIC_OBJECT_INFO extends Structure + { + public int nObjectID; // 物体ID + public int nRelatedID; // 关联物体ID + // 如果物体ID是车牌,关联物体ID是车辆;反则关联物体ID是车牌 + public byte[] szObjectType = new byte[32]; // 物体类别(车牌 - "Plate" / 车辆 - "Car") + public byte[] szObjectSubType = new byte[32]; // 物体子类型(车牌 - 车牌类型 / 车辆 - 车辆类型) + public byte[] szLabel = new byte[32]; // 标识(物体是车牌表示车牌号码,物体是车辆表示车标) + public byte[] szColor = new byte[32]; // 颜色(物体是车牌表示车牌颜色,物体是车辆表示车身颜色) + public STU_RECT_L stuBoundingBox; // 包围盒 + public byte[] reserved = new byte[2080]; // 保留字段 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nObjectID", "nRelatedID", "szObjectType", + "szObjectSubType", "szLabel", "szColor", "stuBoundingBox", "reserved"}); + } + + public static class ByReference extends STU_TRAFFIC_OBJECT_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_TRAFFIC_OBJECT_INFO implements Structure.ByValue + { + } + }; + + // 交通车牌信息 + public static class STU_TRAFFIC_PLATE_INFO extends Structure + { + public int nObjectID; // 物体ID + public int nRelatedID; // 关联物体ID + public byte[] szObjectType = new byte[32]; // 车牌 - "Plate" + public byte[] szObjectSubType = new byte[32]; // 车牌 - 车牌类型 + public byte[] szLabel = new byte[32]; // 车牌号码 + public byte[] szColor = new byte[32]; // 颜色(物体是车牌表示车牌颜色,物体是车辆表示车身颜色) + public STU_RECT_L stuBoundingBox; // 包围盒 + public byte nBelief; // 置信度 + public int nBWListRealCount; // 车牌所属名单实际数量 + public int[] emBWTypes = new int[NetDefs.MAX_TRAFFIC_PLATE_BWLIST_NUM]; // 车牌所属名单,支持多名单, EM_TRAFFIC_BWLIST_TYPE + public byte[] reserved = new byte[2063]; // 保留字段 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nObjectID", "nRelatedID", "szObjectType", + "szObjectSubType", "szLabel", "szColor", "stuBoundingBox", "nBelief", + "nBWListRealCount", "emBWTypes", "reserved"}); + } + + public static class ByReference extends STU_TRAFFIC_PLATE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_TRAFFIC_PLATE_INFO implements Structure.ByValue + { + } + }; + + // 交通车辆信息 + public static class STU_TRAFFIC_VEHICLE_INFO extends Structure + { + public int nObjectID; // 物体ID + public int nRelatedID; // 关联物体ID + public byte[] szObjectType = new byte[32]; //车辆 - "Car" + public byte[] szObjectSubType = new byte[32]; // 车牌 - 车牌类型 + public byte[] szLabel = new byte[32]; // 车牌号码 + public byte[] szColor = new byte[32]; // 颜色(物体是车牌表示车牌颜色,物体是车辆表示车身颜色) + public STU_RECT_L stuBoundingBox; // 包围盒 + public byte[] szLabelSubType = new byte[64]; // 车辆子品牌 + public byte[] szYearModel = new byte[64]; // 车辆年款 + public byte nBelief; // 置信度 + public byte[] reserved = new byte[1951]; // 保留字段 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nObjectID", "nRelatedID", "szObjectType", + "szObjectSubType", "szLabel", "szColor", "stuBoundingBox", "nBelief", "reserved"}); + } + + public static class ByReference extends STU_TRAFFIC_VEHICLE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_TRAFFIC_VEHICLE_INFO implements Structure.ByValue + { + } + }; + + // 交通综合信息 + public static class STU_TRAFFIC_TRANSPORT extends Structure + { + public STU_TRAFFIC_PLATE_INFO stPlate; // 车牌信息 + public STU_TRAFFIC_VEHICLE_INFO stVehicle; // 车辆信息 + public byte[] reserved = new byte[2560]; // 预留信息 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "stPlate", "stVehicle", "reserved"}); + } + + public static class ByReference extends STU_TRAFFIC_TRANSPORT implements Structure.ByReference + { + } + + public static class ByValue extends STU_TRAFFIC_TRANSPORT implements Structure.ByValue + { + } + }; + + // 交通行人结构化信息 + public static class STU_TRAFFIC_PASSER extends Structure + { + public STU_EVENT_FACE_INFO_EX stFace; // 人脸信息 + public STU_EVENT_BODY_INFO stBody; // 人体信息 + public byte[] reserved = new byte[1024]; // 预留信息 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "stFace", "stBody", "reserved"}); + } + + public static class ByReference extends STU_TRAFFIC_PASSER implements Structure.ByReference + { + } + + public static class ByValue extends STU_TRAFFIC_PASSER implements Structure.ByValue + { + } + }; + + //交通 - 卡口信息 + public static class STU_EVENT_TRAFFIC_PASS extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone= new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_OBJECT_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_OBJECT_INFO stuVehicleInfo; // 车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuPlateInfo", "stuVehicleInfo", + "stuCommInfo", "reserved3" }); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_PASS implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_PASS implements Structure.ByValue + { + } + }; + + //交通 - 卡口抠图信息 + public static class STU_EVENT_TRAFFIC_PASS_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_OBJECT_INFO stuObjectInfo; // 车牌/车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuObjectInfo", "stuCommInfo", "reserved3" }); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_PASS_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_PASS_CUTOUT implements Structure.ByValue + { + } + }; + + // 交通黑白名单事件 + public static class STU_EVENT_TRAFFIC_BWLIST extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[128]; // 保留字节2 + public STU_TRAFFIC_OBJECT_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_OBJECT_INFO stuVehicleInfo; // 车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1024]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuPlateInfo", "stuVehicleInfo", "stuCommInfo", "reserved3" }); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_BWLIST implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_BWLIST implements Structure.ByValue + { + } + }; + + // 交通黑白名单抠图事件 + public static class STU_EVENT_TRAFFIC_BWLIST_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuObjectInfo; // 车牌信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuObjectInfo", "stuCommInfo", "reserved3" }); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_BWLIST_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_BWLIST_CUTOUT implements Structure.ByValue + { + } + }; + + // 交通逆行事件 + public static class STU_EVENT_TRAFFIC_RETROGRADE extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuPlateInfo", "stuVehicleInfo", + "stuCommInfo", "reserved3" }); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_RETROGRADE implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_RETROGRADE implements Structure.ByValue + { + } + }; + + // 交通逆行抠图事件 + public static class STU_EVENT_TRAFFIC_RETROGRADE_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuObjectInfo; // 车牌信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuObjectInfo", "stuCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_RETROGRADE_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_RETROGRADE_CUTOUT implements Structure.ByValue + { + } + }; + + // 交通压线事件 + public static class STU_EVENT_TRAFFIC_OVER_WHITE_LINE extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuPlateInfo", "stuVehicleInfo", + "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_OVER_WHITE_LINE implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_OVER_WHITE_LINE implements Structure.ByValue + { + } + }; + + // 交通压线抠图事件 + public static class STU_EVENT_TRAFFIC_OVER_WHITE_LINE_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuObjectInfo; // 车牌信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuObjectInfo", "stuCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_OVER_WHITE_LINE_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_OVER_WHITE_LINE_CUTOUT implements Structure.ByValue + { + } + }; + + // 交通压黄线事件 + public static class STU_EVENT_TRAFFIC_OVER_YELLOW_LINE extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuPlateInfo", "stuVehicleInfo", + "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_OVER_YELLOW_LINE implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_OVER_YELLOW_LINE implements Structure.ByValue + { + } + }; + + // 交通压黄线抠图事件 + public static class STU_EVENT_TRAFFIC_OVER_YELLOW_LINE_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuObjectInfo; // 车牌信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuObjectInfo", "stuCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_OVER_YELLOW_LINE_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_OVER_YELLOW_LINE_CUTOUT implements Structure.ByValue + { + } + }; + + // 交通违章变道事件 + public static class STU_EVENT_TRAFFIC_CROSS_LANE extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuPlateInfo", "stuVehicleInfo", + "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_CROSS_LANE implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_CROSS_LANE implements Structure.ByValue + { + } + }; + + // 交通违章变道抠图事件 + public static class STU_EVENT_TRAFFIC_CROSS_LANE_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuObjectInfo; // 车牌信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuObjectInfo", "stuCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_CROSS_LANE_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_CROSS_LANE_CUTOUT implements Structure.ByValue + { + } + }; + + // 交通欠速事件 + public static class STU_EVENT_TRAFFIC_UNDER_SPEED extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuPlateInfo", "stuVehicleInfo", + "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_UNDER_SPEED implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_UNDER_SPEED implements Structure.ByValue + { + } + }; + + // 交通欠速抠图事件 + public static class STU_EVENT_TRAFFIC_UNDER_SPEED_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuObjectInfo; // 车牌信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuObjectInfo", "stuCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_UNDER_SPEED_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_UNDER_SPEED_CUTOUT implements Structure.ByValue + { + } + }; + + // 交通超速事件 + public static class STU_EVENT_TRAFFIC_OVER_SPEED extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuPlateInfo", "stuVehicleInfo", + "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_OVER_SPEED implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_OVER_SPEED implements Structure.ByValue + { + } + }; + + // 交通超速抠图事件 + public static class STU_EVENT_TRAFFIC_OVER_SPEED_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuObjectInfo; // 车牌信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuObjectInfo", "stuCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_OVER_SPEED_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_OVER_SPEED_CUTOUT implements Structure.ByValue + { + } + }; + + // 交通黄牌占道事件 + public static class STU_EVENT_TRAFFIC_YELLOW_PLATE_IN_LANE extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuPlateInfo", "stuVehicleInfo", + "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_YELLOW_PLATE_IN_LANE implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_YELLOW_PLATE_IN_LANE implements Structure.ByValue + { + } + }; + + // 交通黄牌占道抠图事件 + public static class STU_EVENT_TRAFFIC_YELLOW_PLATE_IN_LANE_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuObjectInfo; // 车牌信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuObjectInfo", "stuCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_YELLOW_PLATE_IN_LANE_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_YELLOW_PLATE_IN_LANE_CUTOUT implements Structure.ByValue + { + } + }; + + // 交通机动车占用非机动车道事件 + public static class STU_EVENT_TRAFFIC_CAR_IN_LANE extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuPlateInfo", "stuVehicleInfo", + "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_CAR_IN_LANE implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_CAR_IN_LANE implements Structure.ByValue + { + } + }; + + // 交通机动车占用非机动车道抠图事件 + public static class STU_EVENT_TRAFFIC_CAR_IN_LANE_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuObjectInfo; // 车牌信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuObjectInfo", "stuCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_CAR_IN_LANE_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_CAR_IN_LANE_CUTOUT implements Structure.ByValue + { + } + }; + + // 交通占用公交车道事件 + public static class STU_EVENT_TRAFFIC_OCCUPY_BUS_LANE extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuPlateInfo", "stuVehicleInfo", + "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_OCCUPY_BUS_LANE implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_OCCUPY_BUS_LANE implements Structure.ByValue + { + } + }; + + // 交通占用公交车道抠图事件 + public static class STU_EVENT_TRAFFIC_OCCUPY_BUS_LANE_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuObjectInfo; // 车牌信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuObjectInfo", "stuCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_OCCUPY_BUS_LANE_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_OCCUPY_BUS_LANE_CUTOUT implements Structure.ByValue + { + } + }; + + // 交通驾驶不系安全带事件 + public static class STU_EVENT_TRAFFIC_WITHOUT_BELT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuPlateInfo", "stuVehicleInfo", + "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_WITHOUT_BELT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_WITHOUT_BELT implements Structure.ByValue + { + } + }; + + // 交通驾驶不系安全带抠图事件 + public static class STU_EVENT_TRAFFIC_WITHOUT_BELT_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuObjectInfo; // 车牌信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuObjectInfo", "stuCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_WITHOUT_BELT_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_WITHOUT_BELT_CUTOUT implements Structure.ByValue + { + } + }; + + // 交通驾驶抽烟事件 + public static class STU_EVENT_TRAFFIC_DRIVER_SMOKING extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuPlateInfo", "stuVehicleInfo", + "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_DRIVER_SMOKING implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_DRIVER_SMOKING implements Structure.ByValue + { + } + }; + + // 交通驾驶抽烟抠图事件 + public static class STU_EVENT_TRAFFIC_DRIVER_SMOKING_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuObjectInfo; // 车牌信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuObjectInfo", "stuCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_DRIVER_SMOKING_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_DRIVER_SMOKING_CUTOUT implements Structure.ByValue + { + } + }; + + // 交通驾驶打电话事件 + public static class STU_EVENT_TRAFFIC_DRIVER_CALLING extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuPlateInfo", "stuVehicleInfo", + "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_DRIVER_CALLING implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_DRIVER_CALLING implements Structure.ByValue + { + } + }; + + // 交通驾驶打电话抠图事件 + public static class STU_EVENT_TRAFFIC_DRIVER_CALLING_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuObjectInfo; // 车牌信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuObjectInfo", "stuCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_DRIVER_CALLING_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_DRIVER_CALLING_CUTOUT implements Structure.ByValue + { + } + }; + + // 交通行人禁入事件 + public static class STU_EVENT_TRAFFIC_HUMAN_WANDER extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuPlateInfo", "stuVehicleInfo", + "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_HUMAN_WANDER implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_HUMAN_WANDER implements Structure.ByValue + { + } + }; + + // 交通行人禁入抠图事件 + public static class STU_EVENT_TRAFFIC_HUMAN_WANDER_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuObjectInfo; // 车牌信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuObjectInfo", "stuCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_HUMAN_WANDER_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_HUMAN_WANDER_CUTOUT implements Structure.ByValue + { + } + }; + + // 交通违停事件 + public static class STU_EVENT_TRAFFIC_PARKING extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuPlateInfo", "stuVehicleInfo", + "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_PARKING implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_PARKING implements Structure.ByValue + { + } + }; + + // 交通违停抠图事件 + public static class STU_EVENT_TRAFFIC_PARKING_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuObjectInfo; // 车牌信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuObjectInfo", "stuCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_PARKING_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_PARKING_CUTOUT implements Structure.ByValue + { + } + }; + + // 交通鸣笛事件 + public static class STU_EVENT_TRAFFIC_WHISTLE extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuPlateInfo", "stuVehicleInfo", + "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_WHISTLE implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_WHISTLE implements Structure.ByValue + { + } + }; + + // 交通鸣笛抠图事件 + public static class STU_EVENT_TRAFFIC_WHISTLE_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuObjectInfo; // 车牌信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuObjectInfo", "stuCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_WHISTLE_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_WHISTLE_CUTOUT implements Structure.ByValue + { + } + } + + // 交通未戴安全帽事件 + public static class STU_EVENT_TRAFFIC_NO_HELMET extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuPlateInfo", "stuVehicleInfo", "stuCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_NO_HELMET implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_NO_HELMET implements Structure.ByValue + { + } + } + + //交通非机动车抠图事件 + public static class STU_EVENT_TRAFFIC_NONMOTOR_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号,选填 + public int nCountInGroup; // 组内图片总数,选填 + public int nIndexInGroup; // 组内图片序号,选填,默认为1 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szAction = new byte[64]; // 事件动作 + public byte[] szClass = new byte[64]; // 事件所属大类 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 当地时区(GMT+08:00) + public int nTimestamp; // 0时区时间戳(秒)(东八区 = -8*60*60*1000) + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TIME_EX stuTime; // 事件时间 + public STU_TRAFFIC_PLATE_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 车身信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nCountInGroup", "nIndexInGroup", + "szEvent", "szAction", "szClass", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimestamp", "reserved2", "stuTime", "stuPlateInfo", "stuVehicleInfo", "stuCommInfo", "stuTrafficCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_NONMOTOR_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_NONMOTOR_CUTOUT implements Structure.ByValue + { + } + }; + + //交通非机动车事件 + public static class STU_EVENT_TRAFFIC_NONMOTOR extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号,选填 + public int nCountInGroup; // 组内图片总数,选填 + public int nIndexInGroup; // 组内图片序号,选填,默认为1 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szAction = new byte[64]; // 事件动作 + public byte[] szClass = new byte[64]; // 事件所属大类 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 当地时区(GMT+08:00) + public int nTimestamp; // 0时区时间戳(秒)/(东八区 = -8*60*60*1000) + public byte[] reserved2 = new byte[220]; // 保留字节2 + public STU_TIME_EX stuTime; // 事件时间 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 车身信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nCountInGroup", "nIndexInGroup", + "szEvent", "szAction", "szClass", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimestamp", "reserved2", "stuTime", "stuVehicleInfo", "stuCommInfo", "stuTrafficCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_NONMOTOR implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_NONMOTOR implements Structure.ByValue + { + } + }; + + // 结构化事件 + public static class STU_EVENT_TRAFFIC_STRUCTURATION extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[220]; // 保留字节2 + public int nTransportCount; // 交通综合信息数组元素个数 + public Pointer pstTransportArr; // 交通综合信息数组, STU_TRAFFIC_TRANSPORT + public int nPasserCount; // 交通行人数组元素个数 + public Pointer pstPasserArr; // 交通行人数组, STU_TRAFFIC_PASSER + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[2048]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "nTransportCount", "pstTransportArr", "nPasserCount", + "pstPasserArr", "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_STRUCTURATION implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_STRUCTURATION implements Structure.ByValue + { + } + }; + + // 结构化抠图事件 + public static class STU_EVENT_TRAFFIC_STRUCTURATION_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[224]; // 保留字节2 + public Pointer pstFace; // 交通行人人脸信息,为 NULL 说明不存在, STU_EVENT_FACE_INFO_EX + public Pointer pstBody; // 交通行人人体信息,为 NULL 说明不存在, STU_EVENT_BODY_INFO + public Pointer pstPlateInfo; // 车牌信息,为 NULL 说明不存在, STU_TRAFFIC_PLATE_INFO + public Pointer pstVehicleInfo; // 车辆信息,为 NULL 说明不存在, STU_TRAFFIC_VEHICLE_INFO + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[2048]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "pstFace", "pstBody", "pstPlateInfo", "pstVehicleInfo", + "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_STRUCTURATION_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_STRUCTURATION_CUTOUT implements Structure.ByValue + { + } + }; + + ///////////////////////////////////////////////////////////////////////////////////////////////////// + // 球机交通违停事件 + public static class STU_EVENT_SD_TRAFFIC_PARKING extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public int emShapShotType; // 抓拍类,EM_SD_TRAFFIC_SNAPSHOT_TYPE + public STU_TIME_EX stuEndTime; // 事件结束时间 + public int bPeopleAround; // 车附近是否有人 + public byte[] reserved2 = new byte[176]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_PLATE_INFO stuPlateInfo; // 车牌信息 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "emShapShotType", "stuEndTime", "reserved2", "stuTrafficCommInfo", + "stuPlateInfo", "stuVehicleInfo", "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_SD_TRAFFIC_PARKING implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_SD_TRAFFIC_PARKING implements Structure.ByValue + { + } + }; + + // 球机交通横穿马路事件 + public static class STU_EVENT_SD_TRAFFIC_ROADING_CROSSING extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[176]; // 保留字节2 + public STU_TRAFFIC_COMMON_INFO stuTrafficCommInfo; // 交通公共信息 + public STU_TRAFFIC_VEHICLE_INFO stuVehicleInfo; // 非机动车辆信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1280]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuTrafficCommInfo", "stuVehicleInfo", "stuCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_SD_TRAFFIC_ROADING_CROSSING implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_SD_TRAFFIC_ROADING_CROSSING implements Structure.ByValue + { + } + }; + + ///////////////////////////////////////////////////////////////////////////////////////////////////// + // Universal + ///////////////////////////////////////////////////////////////////////////////////////////////////// + + // 遗留物检测事件信息 + public static class STU_EVENT_UNIVERSAL_LEFT_DETECT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[256]; // 保留字节2 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1024]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_UNIVERSAL_LEFT_DETECT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_UNIVERSAL_LEFT_DETECT implements Structure.ByValue + { + } + }; + + // 移出物检测事件信息 + public static class STU_EVENT_UNIVERSAL_REMOVE_DETECT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[256]; // 保留字节2 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1024]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_UNIVERSAL_REMOVE_DETECT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_UNIVERSAL_REMOVE_DETECT implements Structure.ByValue + { + } + }; + + // 区域入侵事件信息 + public static class STU_EVENT_UNIVERSAL_REGION_INVADE extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[256]; // 保留字节2 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1024]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_UNIVERSAL_REGION_INVADE implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_UNIVERSAL_REGION_INVADE implements Structure.ByValue + { + } + }; + + // 拌线入侵事件信息 + public static class STU_EVENT_UNIVERSAL_LINE_INVADE extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[256]; // 保留字节2 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1024]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved2", "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_UNIVERSAL_LINE_INVADE implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_UNIVERSAL_LINE_INVADE implements Structure.ByValue + { + } + }; + + //未戴帽子事件中人头信息 + public static class STU_EVENT_NOHAT_INFO extends Structure + { + public int nObjectID; //物体唯一标志ID + public byte[] szObjectType = new byte[32];//物体类型描述 + public STU_RECT_I stuBoundingBox; //包围盒 + public byte[] reserved = new byte[256]; //保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String[] {"nObjectID", "szObjectType", "stuBoundingBox", "reserved"}); + } + + public static class ByReference extends STU_EVENT_NOHAT_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_NOHAT_INFO implements Structure.ByValue + { + } + }; + + ////未戴帽子大图事件 + public static class STU_EVENT_NOHAT_DETECT_WHOLE extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public int nMatchSequence; //外部信息流序号,用于回传匹配 + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[252]; // 保留字节2 + public int nNohatCutout; //大图内未戴帽子个数 + public STU_EVENT_NOHAT_INFO[] stuNohat = new STU_EVENT_NOHAT_INFO[10]; //大图内未戴帽子信息 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1024]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String[] {"nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1", "nMatchSequence", + "szTimeZone" , "nTimeZoneMS", "stuTime", "reserved2", "nNohatCutout", "stuNohat", "stuCommInfo", + "reserved3"}); + } + + public static class ByReference extends STU_EVENT_NOHAT_DETECT_WHOLE implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_NOHAT_DETECT_WHOLE implements Structure.ByValue + { + } + }; + + //未戴帽子抠图事件 + public static class STU_EVENT_NOHAT_DETECT_CUTOUT extends Structure + { + public int nChannel; // 通道号 + public int nGroupID; // 组编号 + public int nIndexInGroup; // 组内序号 + public int nCountInGroup; // 组包含的图片数目 + public byte[] szEvent = new byte[64]; // 事件类型 + public byte[] szClass = new byte[64]; // 大类类型 + public byte[] szAction = new byte[64]; // 动作类型 + public double dPTS; // PTS + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] reserved1 = new byte[2]; // 保留位1(字节对齐) + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved2 = new byte[252]; // 保留字节2 + public STU_EVENT_NOHAT_INFO stuNohat; //小图抠图未戴帽子人头信息,只有一人头 + public STU_EVENT_COMMON_INFO stuCommInfo; // 公共信息 + public byte[] reserved3 = new byte[1024]; // 保留字节3 + + protected List getFieldOrder() + { + return Arrays.asList(new String[] {"nChannel", "nGroupID", "nIndexInGroup", "nCountInGroup", + "szEvent", "szClass", "szAction", "dPTS", "nUTC", "nUTCMS", "reserved1","szTimeZone" , + "nTimeZoneMS", "stuTime", "reserved2", "stuNohat", "stuCommInfo", "reserved3"}); + } + + public static class ByReference extends STU_EVENT_NOHAT_DETECT_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_NOHAT_DETECT_CUTOUT implements Structure.ByValue + { + } + }; + + ///////////////////////////////////////////////////////////////////////////////////////////////////// + //other + ///////////////////////////////////////////////////////////////////////////////////////////////////// + //二维码分析事件信息 + public static class STU_EVENT_OTHER_QRCODE_ANALYZE extends Structure + { + public byte[] szQRResult = new byte[128]; // 二维码识别结果 + public int nUTC; // UTC + public short nUTCMS; // UTCMS + public byte[] szTimeZone = new byte[16]; // 时区字符串(GMT+08:00) + public int nTimeZoneMS; // 与UTC时区毫秒差(东八区 = -8*60*60*1000) + public STU_TIME_EX stuTime; // 事件时间 + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "szQRResult", "nUTC", "nUTCMS", "szTimeZone", + "nTimeZoneMS", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_EVENT_OTHER_QRCODE_ANALYZE implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_OTHER_QRCODE_ANALYZE implements Structure.ByValue + { + } + }; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + //音视频 + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + + //回调视频数据帧的帧参数结构体 + public static class STU_VIDEO_FRAME_PARAM extends Structure + { + 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 + public int fourcc; // 如果是H264编码则总为0,MPEG4这里总是填写FOURCC('X','V','I','D'); + public byte[] reserved1 = new byte[4]; // 保留位 1 + public STU_TIME struTime; // 时间信息 + public byte[] reserved2 = new byte[16]; // 保留位 2 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"encode", "frametype", "format", "size", + "fourcc", "reserved1", "struTime", "reserved2"}); + } + + public static class ByReference extends STU_VIDEO_FRAME_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEO_FRAME_PARAM implements Structure.ByValue + { + } + }; + + // 回调音频数据帧的帧参数结构体 + public static class STU_CBPCM_DATA_PARAM extends Structure + { + 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 byte[] reserved = new byte[16]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"channels", "samples", "depth", "param1", "reserved"}); + } + + public static class ByReference extends STU_CBPCM_DATA_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CBPCM_DATA_PARAM implements Structure.ByValue + { + } + }; + + //回调YUV数据的参数结构体 + public static class STU_CBYUV_DATA_PARAM extends Structure + { + public int nWidth; // 图像的宽 + public int nHeight; // 图像的高 + public byte[] reserved = new byte[32]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nWidth", "nHeight", "reserved"}); + } + + public static class ByReference extends STU_CBYUV_DATA_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CBYUV_DATA_PARAM implements Structure.ByValue + { + } + }; + + // 音频格式信息 + public static class STU_AUDIO_FORMAT_INFO extends Structure + { + public int emEncodeFormat; // 编码格式, EM_AUDIO_ENCODE_COMPRESS_TYPE + public int nFrequency; // 采样率 + public int nDepth; // 采样深度 + public int nVoiceLevel; // 对讲音量等级 + // [-2, - 1, 0, 1, 2, 3, 4] 等级越高音量越大 + // 0 表示正常音量 + public NetDelegates.fTalkBackDataCallBack cbRealData; // 语音对讲数据回调 + public int dwUser; // 用户自定义回调参数 + + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emEncodeFormat", "nFrequency", "nDepth", + "nVoiceLevel", "cbRealData", "dwUser", "reserved"}); + } + + public static class ByReference extends STU_AUDIO_FORMAT_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_AUDIO_FORMAT_INFO implements Structure.ByValue + { + } + }; + + public static class STU_REAL_AUDIO_FORMAT_INFO extends Structure + { + public int emEncodeFormat; // 编码格式, EM_AUDIO_ENCODE_COMPRESS_TYPE + public int nBitsPerSample; // 采样深度 + public int nSamplesPerSec; // 采样率 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emEncodeFormat", "nBitsPerSample", "nSamplesPerSec", "reserved"}); + } + + public static class ByReference extends STU_REAL_AUDIO_FORMAT_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_REAL_AUDIO_FORMAT_INFO implements Structure.ByValue + { + } + }; + + ////////////////////////////////////////////////////////////////////////////////////// + // 人脸抓拍机人脸抓拍图和背景图处理的数据类型 + // 图片订阅参数 + public static class NetPicParamCV1 extends Structure + { + public int nSize; + public int nChannel; + public fNetPicStreamCallBackCV1 cbNetPicStream; + public Pointer ptrUser; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nSize", "nChannel", "cbNetPicStream", "ptrUser"}); + } + + public static class ByReference extends NetPicParamCV1 implements Structure.ByReference + { + } + + public static class ByValue extends NetPicParamCV1 implements Structure.ByValue + { + } + }; + + // 图片抓拍时间 + public static class PicTimeCV1 extends Structure + { + public int nYear; + public int nMonth; + public int nDay; + public int nHour; + public int nMinute; + public int nSecond; + public int nMillisecond; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nYear", "nMonth", "nDay", "nHour", "nMinute", "nSecond", "nMillisecond"}); + } + + public static class ByReference extends PicTimeCV1 implements Structure.ByReference + { + } + + public static class ByValue extends PicTimeCV1 implements Structure.ByValue + { + } + }; + + // 全景图数据 + public static class PicDataCV1 extends Structure + { + public int nWidth; + public int nHeight; + public int nDataLen; + public Pointer ptrPicData; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nWidth", "nHeight", "nDataLen", "ptrPicData" }); + } + + public static class ByReference extends PicDataCV1 implements Structure.ByReference + { + } + + public static class ByValue extends PicDataCV1 implements Structure.ByValue + { + } + }; + + // 人脸属性 + public static class FaceAttributeCV1 extends Structure + { + // 0x00-未知; 0x01-清晰度; 0x02-质量度; 0x03-模糊度; + // 0x04-性别; 0x05-年龄; 0x06-民族; 0x07-戴口罩; + // 0x08-戴帽子; 0x09-戴眼镜; 0x0A-表情; 0x0B-物体跟踪状态; + public int nType; + // 置信度[0-255]; + // 清晰度[0-255]; + // 质量度[0-255]; + // 模糊度[0-255]; + // 性别[0-男|1-女|2-其它]; + // 年龄 [0-n]; + // 民族[0-未知,1-非少数民族,2-少数民族]; + // 戴口罩[0-未知,1-戴口罩,2-未戴口罩]; + // 戴帽子[0-未知,1-戴帽子,2-未戴帽子]; + // 戴眼镜[0-未知,1-戴眼镜,2-未戴眼镜]; + // 表情[0-未知,1-正常,2-微笑,3-大笑]; + // 物体跟踪状态 [0-未知,1-新建,2-更新,3-消失]; + public int nValue; // 属性值 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nType", "nValue" }); + } + + public static class ByReference extends FaceAttributeCV1 implements Structure.ByReference + { + } + + public static class ByValue extends FaceAttributeCV1 implements Structure.ByValue + { + } + }; + + // 人脸检测-人脸抠图数据 + public static class FacePicDataCV1 extends Structure + { + public int nFaceId; // 人脸物体ID + public int nDrop; // 物体跟踪状态为‘消失’时,值为1,其它时候为0 + public int nFacelevel; // 暂时不用 + public STU_RECT_L stuFaceRect; // 图片矩形框 (8192 * 8192 坐标系) + public int nWidth; // 图片像素宽度 + public int nHeight; // 图片像素高度 + public int nFaceAttrCount; // 实际属性个数 + public int nFaceAttrStructSize; // 所有属性大小 + // 属性数组, FaceAttributeCV1 + public Pointer[] pstFaceAttr = new Pointer[NetDefs.MAX_FACE_ATTRIBUTE_NUM_CV1]; + public int nDataLen; // 图片数据大小 + public Pointer ptrPicData; // 图片数据, char* + public int nBase64FeatureLen; // 人脸特征值字符串长度 + public Pointer pszBase64Feature; // 人脸特征值 String,base64编码格式,最优模式下,选择抽取特征值时,有该字段;主要在人脸大图和人脸抠图事件中使用 + public byte[] szFeatureVersion = new byte[64]; // 人脸特征值版本号 最优模式下,选择抽取特征值时,有该字段,主要在人脸大图和人脸抠图中有该字段 + public float fTemperature; // 体温 + public int iTemperatureAlarm; // 体温报警状态,0-未布控,1-体温正常,2-高体温报警 + public byte[] reserved = new byte[504]; // 保留数据 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nFaceId", "nDrop", "nFacelevel", "stuFaceRect", "nWidth", + "nHeight", "nFaceAttrCount", "nFaceAttrStructSize", "pstFaceAttr", "nDataLen", "ptrPicData", + "nBase64FeatureLen", "pszBase64Feature", "szFeatureVersion", "fTemperature", "iTemperatureAlarm", + "reserved"}); + } + + public static class ByReference extends FacePicDataCV1 implements Structure.ByReference + { + + } + + public static class ByValue extends FacePicDataCV1 implements Structure.ByValue + { + + } + }; + + // 人脸检测-人形抠图数据 + public static class BodySnapPicDataCV1 extends Structure + { + public int iBodyId; // 人形物体ID + public STU_RECT_I tBodyRect; // 图片矩形框 (8192 * 8192 坐标系) + + public byte nClothesUpSleeve; // 上衣特征 0-未知 1-短袖 2-长袖 + public byte nClothesUpColor; // 上衣颜色 + // 0-未知 1-黑色 2-白色 3-灰色 + // 4-红色 5-橙色 6-黄色 7-绿色 + // 8-深蓝色 9-浅蓝色 10-紫色 11-粉红色 + // 12-棕色 13-彩色 + + public byte nPaintsLen; // 裤子特征 0-未知 1-短裤 2-长裤 + public byte nPaintsColor; // 裤子颜色 + // 0-未知 1-黑色 2-白色 3-灰色 + // 4-红色 5-橙色 6-黄色 7-绿色 + // 8-深蓝色 9-浅蓝色 10-紫色 11-粉红色 + // 12-棕色 13-彩色 + + public byte nRideBike; // 骑自行车状态 0-未知 1-骑车 2-不骑车 + public byte nBagCarry; // 背包状态 0-未知 1-背包 2-未背包 + public byte nHatWore; // 戴帽子状态 0-未知 1-戴帽子 2-不戴帽子 + + public Pointer pstPicData; // 图片数据, PicDataCV1* + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "iBodyId", "tBodyRect", "nClothesUpSleeve", + "nClothesUpColor", "nPaintsLen", "nPaintsColor", "nRideBike", "nBagCarry", + "nHatWore", "pstPicData", "reserved"}); + } + + public static class ByReference extends BodySnapPicDataCV1 implements Structure.ByReference + { + + } + + public static class ByValue extends BodySnapPicDataCV1 implements Structure.ByValue + { + + } + }; + + // 人脸识别-人脸抠图数据 + public static class FaceRecgPicDataCV1 extends Structure + { + public int iFaceId; // 人脸物体ID + public STU_RECT_L tFaceRect; // 图片矩形框 (8192 * 8192 坐标系) + public int iWidth; // 图片像素宽度 + public int iHeight; // 图片像素高度 + public int iFaceAttrCount; // 暂时不用 + public int iFaceAttrStructSize; // 暂时不用 + // 属性数组, FaceAttributeCV1 + public Pointer[] pstFaceAttr = new Pointer[NetDefs.MAX_FACE_ATTRIBUTE_NUM_CV1]; + public int iDataLen; // 图片数据大小 + public Pointer ptrPicData; // 图片数据 + public int nBase64FeatureLen; // 人脸特征值字符串长度 + public Pointer pszBase64Feature; // 人脸特征值 String,base64编码格式,最优模式下,选择抽取特征值时,有该字段;主要在人脸大图和人脸抠图事件中使用 + public byte[] szFeatureVersion = new byte[64]; // 人脸特征值版本号 最优模式下,选择抽取特征值时,有该字段,主要在人脸大图和人脸抠图中有该字段 + public float fTemperature; // 体温 + public int iTemperatureAlarm; // 体温报警状态,0-未布控,1-体温正常,2-高体温报警 + public byte[] reserved = new byte[176]; // 保留数据 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "iFaceId", "tFaceRect", "iWidth", "iHeight", "iFaceAttrCount", + "iFaceAttrStructSize", "pstFaceAttr", "iDataLen", "ptrPicData", "nBase64FeatureLen", + "pszBase64Feature", "szFeatureVersion", "fTemperature", "iTemperatureAlarm", "reserved"}); + } + + public static class ByReference extends FaceRecgPicDataCV1 implements Structure.ByReference + { + + } + + public static class ByValue extends FaceRecgPicDataCV1 implements Structure.ByValue + { + + } + }; + + // 手动抓拍相关图片数据流 + public static class ManualSnapPicStreamCV1 extends Structure + { + public int nStructSize; // ManualSnapPicStreamCV1结构体大小 + public PicTimeCV1 tPicTime; // 抓图时间 + public int nFullPicSize; // PicDataCV1 结构体大小 + // 背景图数据, PicDataCV1 + public PicDataCV1.ByReference pstFullPicData = new PicDataCV1.ByReference(); + public byte[] szMachineAddress = new byte[128]; // 事件/报警发生地点 + public byte[] szSerialNumber = new byte[64]; // 设备序列号 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nStructSize", "tPicTime", "nFullPicSize", "pstFullPicData", + "szMachineAddress", "szSerialNumber", "reserved"}); + } + + public static class ByReference extends ManualSnapPicStreamCV1 implements Structure.ByReference + { + + } + + public static class ByValue extends ManualSnapPicStreamCV1 implements Structure.ByValue + { + + } + }; + + // 人脸抓拍相关图片数据流 + public static class FacePicStreamCV1 extends Structure + { + public int nStructSize; // FacePicStreamCV1结构体大小 + public PicTimeCV1 stuPicTime; // 抓图时间 + public int nFullPicSize; // PicDataCV1结构体大小 + // 背景图数据,STU_PIC_DATA_CV1类型 + public PicDataCV1.ByReference ptrRefFullPicData = new PicDataCV1.ByReference(); + // 一张背景图对应一张/多张人脸抠图,当前为一张 + public int nFaceCount; // 人脸抠图张数 + public int nFacePicSize; // STU_FACE_PIC_DATA_CV1 数组总大小 + // 人脸抠图数据数组, STU_FACE_PIC_DATA_CV1 类型。只有一张图片 + public FacePicDataCV1.ByReference[] ptrRefFaceDataArr = new FacePicDataCV1.ByReference[NetDefs.MAX_NET_PIC_STRERAM_FACE_NUM]; + public byte[] szMachineAddress = new byte[128]; // 事件/报警发生地点 + public byte[] szSerialNumber = new byte[64]; // 设备序列号 + + // 一张背景图对应一张/多张人形抠图,当前为一张 + public int nBodySnapCount; // 人形抠图张数 + public int nBodySnapPicSize; // BodySnapPicDataCV1 数组总大小 + public Pointer pstBodySnapDataArr; // 人形抠图数据数组, BodySnapPicDataCV1* + + public byte[] reserved = new byte[52]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nStructSize", "stuPicTime", "nFullPicSize", + "ptrRefFullPicData", "nFaceCount", "nFacePicSize", "ptrRefFaceDataArr", + "szMachineAddress", "szSerialNumber", "nBodySnapCount", "nBodySnapPicSize", + "pstBodySnapData", "reserved"}); + } + + public static class ByReference extends FacePicStreamCV1 implements Structure.ByReference + { + } + + public static class ByValue extends FacePicStreamCV1 implements Structure.ByValue + { + } + }; + + // 人脸识别相关图片数据流 + public static class FaceRecgPicStreamCV1 extends Structure + { + public int nStructSize; // FaceRecgPicStreamCV1结构体大小 + public PicTimeCV1 tPicTime; // 抓图时间 + public int nFullPicSize; // PicDataCV1结构体大小 + public Pointer pstFullPicData; // 背景图数据, PicDataCV1 + // 一张背景图对应一张/多张人脸抠图,当前为一张 + public int nFaceCount; + public int nFacePicSize; // FaceRecgPicDataCV1 数组总大小 + // 图片数据, FaceRecgPicDataCV1 + public FaceRecgPicDataCV1.ByReference[] ptrFaceData = new FaceRecgPicDataCV1.ByReference[NetDefs.MAX_NET_PIC_STRERAM_FACE_NUM]; + public byte[] szMachineAddress = new byte[128]; // 事件/报警发生地点 + public byte[] szSerialNumber = new byte[64]; // 设备序列号 + public int nFaceRecognizeRecCount; // 人脸识别记录信息数组大小 + // 人脸识别记录数组 + public STU_EVENT_FACE_RECOGNIZE_RECORD[] stuFaceRecognizeRecArr = new STU_EVENT_FACE_RECOGNIZE_RECORD[NetDefs.MAX_FACE_GROUP_NUM]; + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nStructSize", "tPicTime", "nFullPicSize", "pstFullPicData", + "nFaceCount", "nFacePicSize", "pstFaceData", "szMachineAddress", "szSerialNumber", + "nFaceRecognizeRecCount", "stuFaceRecognizeRecArr", "reserved"}); + } + + public static class ByReference extends FaceRecgPicStreamCV1 implements Structure.ByReference + { + } + + public static class ByValue extends FaceRecgPicStreamCV1 implements Structure.ByValue + { + } + }; + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// + public static class STU_FACE_GROUP_INFO extends Structure + { + public int bEnable; // 使能标志位 + public int nGroupID; // 人脸组ID + public byte[] szGroupName = new byte[128]; // 人脸组名称,创建底库时指定,创建后不可更改 + public byte[] szAlias = new byte[128]; // 人脸组别名 + public byte[] szGUID = new byte[64]; // 人脸组唯一ID + public int nFaceCount; // 人脸组在库人脸数(不启用) + public float fSearchThreshold; // 识别比对阈值 [0.0-100.0] + public STU_TIME stCreateTime; // 人脸组创建时间 + public int nTopRank; // 上报识别得分超过阈值的排名靠前的底库人脸个数 + public int nGroupType; // 底库类别, 0 - 白名单; 1 - 灰名单; 2 - 黑名单 + public byte[] reserved = new byte[248]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "bEnable", "nGroupID", + "szGroupName", "szAlias", "szGUID", "nFaceCount", + "fSearchThreshold", "stCreateTime", "nTopRank", + "nGroupType", "reserved"}); + } + + public static class ByReference extends STU_FACE_GROUP_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_GROUP_INFO implements Structure.ByValue + { + } + }; + + public static class STU_FACE_GROUP_CREATE_IN_PARAM extends Structure + { + public int bEnable; // 使能标志位 + public float fSearchThreshold; // 识别比对阈值 [0.0-100.0] + public byte[] szAlias = new byte[128]; // 人脸组别名(不能包含特殊字符) + public int nTopRank; // 上报识别得分超过阈值的排名靠前的底库人脸个数 + public int nGroupType; // 0-白名单; 1-灰名单; 2-黑名单 + public byte[] reserved = new byte[120]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "bEnable", "fSearchThreshold", + "szAlias", "nTopRank", "nGroupType", "reserved"}); + } + + public static class ByReference extends STU_FACE_GROUP_CREATE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_GROUP_CREATE_IN_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_GROUP_CREATE_OUT_PARAM extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码,0-无错误 + public STU_FACE_GROUP_INFO stFaceGroupInfo; // 人脸组信息 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "dwSize", "nError", + "stFaceGroupInfo", "reserved"}); + } + + public static class ByReference extends STU_FACE_GROUP_CREATE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_GROUP_CREATE_OUT_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_GROUP_DELETE_IN_PARAM extends Structure + { + public int nGroupID; // 人脸组 ID + public int bDelBindFace; // 是否同步删掉绑定到改组的人脸图片 + public byte[] reserved = new byte[16]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nGroupID", "bDelBindFace", "reserved"}); + } + + public static class ByReference extends STU_FACE_GROUP_DELETE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_GROUP_DELETE_IN_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_GROUP_DELETE_OUT_PARAM extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码, 0 为无错误 + public byte[] reserved = new byte[16]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "dwSize", "nError", "reserved"}); + } + + public static class ByReference extends STU_FACE_GROUP_DELETE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_GROUP_DELETE_OUT_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_GROUP_EDIT_INFO extends Structure + { + public int bEnable; // 使能标志位,非 0 或 1 则不配置 + public float fSearchThreshold; // 识别比对阈值 [0.0 - 100.0], -1 则不配置 + public byte[] szAlias = new byte[128]; // 人脸组别名, 为空则不修改 + public byte[] szGUID = new byte[64]; // 全局 ID,为空则不修改 + public int nTopRank; // 上报识别得分超过阈值的排名靠前的底库人脸个数 [1-5] + public byte[] reserved = new byte[124]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "bEnable", "fSearchThreshold", + "szAlias", "szGUID", "nTopRank", "reserved"}); + } + + public static class ByReference extends STU_FACE_GROUP_EDIT_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_GROUP_EDIT_INFO implements Structure.ByValue + { + } + }; + + public static class STU_FACE_GROUP_EDIT_IN_PARAM extends Structure + { + public int nGroupID; // 浜鸿劯缁� ID锛堜笉鏇存敼锛� + public STU_FACE_GROUP_EDIT_INFO stFaceGroupEditInfo; // 鍙慨鏀圭殑浜鸿劯缁勪俊鎭� + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nGroupID", "stFaceGroupEditInfo", "reserved"}); + } + + public static class ByReference extends STU_FACE_GROUP_EDIT_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_GROUP_EDIT_IN_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_GROUP_EDIT_OUT_PARAM extends Structure + { + public int dwSize; // 人脸组 ID(不更改) + public int nError; // 可修改的人脸组信息 + public byte[] reserved = new byte[16]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "dwSize", "nError", "reserved"}); + } + + public static class ByReference extends STU_FACE_GROUP_EDIT_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_GROUP_EDIT_OUT_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_GROUP_DELETE_SCHEDULE_INFO extends Structure + { + public int nTotalCount; // 需要删除的总人脸数 + public int nSuccessCount; // 已成功删除的人脸数 + public int nFailCount; // 已删除失败的人脸数 + public int nState; // 人脸库删除状态 + // 0-未做人脸库删除操作 + // 1-正在删除人脸库 + // 2-已完成人脸库删除 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { "nTotalCount", "nSuccessCount", "nFailCount", "nState", "reserved"}); + } + + public static class ByReference extends STU_FACE_GROUP_DELETE_SCHEDULE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_GROUP_DELETE_SCHEDULE_INFO implements Structure.ByValue + { + } + }; + + public static class STU_FACE_GROUP_ARRAY_INFO extends Structure + { + // 人脸组实际数目 + public short nFaceGroupNum; + // 字节对齐 + public byte[] reserved = new byte[2]; + // 人脸组信息 + public STU_FACE_GROUP_INFO[] stFaceGroupArr = new STU_FACE_GROUP_INFO[NetDefs.MAX_FACE_GROUP_NUM]; + + public STU_FACE_GROUP_ARRAY_INFO() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] { "nFaceGroupNum", "reserved", "stFaceGroupArr"}); + } + + public static class ByReference extends STU_FACE_GROUP_ARRAY_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_GROUP_ARRAY_INFO implements Structure.ByValue + { + } + }; + + public static class STU_PERSON_INFO extends Structure + { + public int nPersonID; // 人员 ID,当添加人员时,PersonID 还未产生,是无效的,不用设置; + // 人员 ID 由设备自动生成,不用维护该字段 + public byte[] szName = new byte[128]; // 人脸图别名,当添加人员时,选填,不能有特殊字符; + public int emSexType; // 性别,当添加人员时,选填;EM_SEX_TYPE + public STU_TIME stBirthday; // 生日,当添加人员时,选填; + public byte[] szCertificateType = new byte[64]; // 证件类型 + // 当添加人员时,必填,默认为 IC(身份证); + // 当更新人员时,选填,默认为 IC + public byte[] szID = new byte[128]; // 证件 ID + // 当添加人员时,必填; + // 当更新人员时,必填,用于人员检索,不更新 ID + public byte[] reserved1 = new byte[32]; // 保留参数1 + public byte[] szCountry = new byte[64]; // 国别,当添加人员时,选填; + public byte[] szProvince = new byte[64]; // 省份,当添加人员时,选填; + public byte[] szCity = new byte[128]; // 所在城市,当添加人员时,选填; + + + public byte[] szCustom = new byte[128]; // 自定义描述字段,字符串,配合人脸识别能力(STU_CAPS_FACE_RECOGNIZE)中的uCustomDescriptionFunc字段使用; + // uCustomDescriptionFunc为0时,为NULL + // uCustomDescriptionFunc表示梯控时: + // "0" - 所有楼层; + // "1,2,3" - 非全楼层时,指定具体楼层号,中间用","分割,不可带空格 + + public byte[] reserved2 = new byte[896]; // 保留参数2 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "nPersonID", "szName", "emSexType", + "stBirthday", "szCertificateType", "szID", + "reserved1", "szCountry", "szProvince", + "szCity", "szCustom", "reserved2"}); + } + + public static class ByReference extends STU_PERSON_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_PERSON_INFO implements Structure.ByValue + { + } + }; + + public static class STU_FACE_ADD_IN_PARAM extends Structure + { + public int nGroupID; // 人脸组 ID + public STU_PERSON_INFO stPersonInfo; // 人员信息 + public int nImageCount; // 人脸图片张数, 不超过 MAX_PERSON_FACE_NUM + public Pointer lpszImageFiles; // 人脸图片本地路径(如果是多张,以 "|" 分隔路径) + public int bNoCreate; // 拒绝创建(不必设置,不启用) + public int bEncSend; // TRUE - 加密发送;FALSE - 非加密发送 + // 需要设备支持加减密发送 + public byte[] reserved = new byte[248]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "nGroupID", "stPersonInfo", "nImageCount", + "lpszImageFiles", "bNoCreate", "bEncSend", "reserved"}); + } + + public static class ByReference extends STU_FACE_ADD_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_ADD_IN_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_ADD_OUT_PARAM extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码,0 - 无错误 + public int nFaceTokenCount; // 添加人脸图片成功后,返回的 facetoken 个数 + // 添加人脸图片成功后,返回的人脸图片对应的 facetoken 字符串 + // 如果是多张,以 "|" 分隔,顺序与添加图片的顺序相同 + public byte[] szFaceTokens = new byte[68 * NetDefs.MAX_PERSON_FACE_NUM]; + public byte[] reserved = new byte[16]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "dwSize", "nError", "nFaceTokenCount", + "szFaceTokens", "reserved"}); + } + + public static class ByReference extends STU_FACE_ADD_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_ADD_OUT_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_EXTRACT_SCHEDULE_INFO extends Structure + { + public int nTotalCount; // 需要建模的总人脸数 + public int nSuccessCount; // 已建模成功的人脸数 + public int nFailCount; // 已建模失败的人脸数 + public int nState; // 库建模状态 + // 0-未做建模操作 + // 1-正在建模 + // 2-已完成建模 + public int bNoCreate; // 拒绝创建(不必设置,不启用) + public byte[] reserve = new byte[60]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "nTotalCount", "nSuccessCount", "nFailCount", + "nState", "bNoCreate", "reserve"}); + } + + public static class ByReference extends STU_FACE_EXTRACT_SCHEDULE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_EXTRACT_SCHEDULE_INFO implements Structure.ByValue + { + } + }; + + // 人脸建模结果信息 + public static class STU_FACE_EXTRACT_FEATURE_DETAIL extends Structure + { + public int nIndex; // 序号 + public byte[] szFaceToken = new byte[64]; // 人脸标识符 + public int nResultCode; // 错误码 为0表示成功,非0为错误 + public byte[] reserved = new byte[60]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nIndex", "szFaceToken", "nResultCode", "reserved"}); + } + + public static class ByReference extends STU_FACE_EXTRACT_FEATURE_DETAIL implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_EXTRACT_FEATURE_DETAIL implements Structure.ByValue + { + } + }; + + // 人脸建模结果详情 + public static class STU_FACE_EXTRACT_FEATURE_DETAILS extends Structure + { + // 已获取详情总数 + public int nTotalCount; + // 人脸建模结果详情数组 + public STU_FACE_EXTRACT_FEATURE_DETAIL[] stDetailArray = new STU_FACE_EXTRACT_FEATURE_DETAIL[NetDefs.MAX_EXTRACT_FEATURE_DETAIL_NUM]; + // 数组中详情数量 + public int nDetailsCount; + // 是否已获取到所有的建模结果 + public int bComplete; + // 保留参数 + public byte[] reserved = new byte[128]; + + public STU_FACE_EXTRACT_FEATURE_DETAILS() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nTotalCount", "stDetailArray", "nDetailsCount", + "bComplete", "reserved"}); + } + + public static class ByReference extends STU_FACE_EXTRACT_FEATURE_DETAILS implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_EXTRACT_FEATURE_DETAILS implements Structure.ByValue + { + } + }; + + public static class STU_FACE_IMAGE extends Structure + { + public Pointer pBuffer; // 人脸图片数据 + public int nBufSize; // 人脸图片数据大小 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "pBuffer", "nBufSize", "reserved"}); + } + + public static class ByReference extends STU_FACE_IMAGE implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_IMAGE implements Structure.ByValue + { + } + }; + + public static class STU_FACE_ADD_IN_PARAM_EX extends Structure + { + public int nGroupID; // 人脸组 ID + public STU_PERSON_INFO stPersonInfo; // 人员信息 + public int nImageCount; // 人脸图片张数, 不超过 MAX_PERSON_FACE_NUM + public STU_FACE_IMAGE[] stFaceImageArray = new STU_FACE_IMAGE[NetDefs.MAX_PERSON_FACE_NUM]; // 人脸图片数组, 请按顺序填写人脸图片数据 + public int bNoCreate; // 拒绝创建(不必设置,不启用) + public int bEncSend; // TRUE - 加密发送;FALSE - 非加密发送 + // 需要设备支持加减密发送 + public byte[] reserved = new byte[124]; // 保留参数 + + public STU_FACE_ADD_IN_PARAM_EX() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] { + "nGroupID", "stPersonInfo", "nImageCount", + "stFaceImageArray", "bNoCreate", "bEncSend", "reserved"}); + } + + public static class ByReference extends STU_FACE_ADD_IN_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_ADD_IN_PARAM_EX implements Structure.ByValue + { + } + }; + + public static class STU_FACE_TOKEN extends Structure + { + public int bValid; // 是否有效,有效则人脸添加成功 + public byte[] szToken = new byte[64];; // 人脸 token + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "bValid", "szToken", "reserved"}); + } + + public static class ByReference extends STU_FACE_TOKEN implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_TOKEN implements Structure.ByValue + { + } + }; + + public static class STU_FACE_ADD_OUT_PARAM_EX extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码,0 - 无错误 + public int nFaceTokenCount; // 添加人脸图片成功后,返回的 facetoken 个数 + public STU_FACE_TOKEN[] stFacTokenArray = new STU_FACE_TOKEN[NetDefs.MAX_PERSON_FACE_NUM]; // 人脸图片 Token 信息 + public byte[] reserved = new byte[16]; // 保留参数 + + public STU_FACE_ADD_OUT_PARAM_EX() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] { + "dwSize", "nError", "nFaceTokenCount", + "stFacTokenArray", "reserved"}); + } + + public static class ByReference extends STU_FACE_ADD_OUT_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_ADD_OUT_PARAM_EX implements Structure.ByValue + { + } + }; + + public static class STU_PERSON_INFO_ADD_IN_PARAM extends Structure + { + public STU_PERSON_INFO stPersonInfo; // 人员信息 + // 人员信息添加时, PersonID 不必赋值 + public int bNoCreate; // 拒绝创建(不必设置,不启用) + public int bEncSend; // TRUE - 加密发送;FALSE - 非加密发送 + // 需要设备支持加减密发送 + public byte[] reserved = new byte[60]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stPersonInfo", "bNoCreate", "bEncSend", "reserved"}); + } + + public static class ByReference extends STU_PERSON_INFO_ADD_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PERSON_INFO_ADD_IN_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_PERSON_INFO_ADD_OUT_PARAM extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码,0 - 无错误 + public int nPersonID; // 人员 ID + public byte[] reserved = new byte[16]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "dwSize", "nError", "nPersonID", "reserved"}); + } + + public static class ByReference extends STU_PERSON_INFO_ADD_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PERSON_INFO_ADD_OUT_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_PERSON_INFO_UPDATE_IN_PARAM extends Structure + { + public STU_PERSON_INFO stPersonInfo; // 人脸信息 + public int bNoCreate; // 拒绝创建(不必设置,不启用) + public int bEncSend; // TRUE - 加密发送;FALSE - 非加密发送 + // 需要设备支持加减密发送 + public byte[] reserved = new byte[120]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stPersonInfo", "bNoCreate", "bEncSend", "reserved"}); + } + + public static class ByReference extends STU_PERSON_INFO_UPDATE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PERSON_INFO_UPDATE_IN_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_PERSON_INFO_UPDATE_OUT_PARAM extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码, 0-无错误 + public byte[] reserved = new byte[16]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "nError", "reserved"}); + } + + public static class ByReference extends STU_PERSON_INFO_UPDATE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PERSON_INFO_UPDATE_OUT_PARAM implements Structure.ByValue + { + } + }; + + // 人员删除参数 + public static class STU_PERSON_DELETE_INFO_PARAM extends Structure + { + public int bNoCreate; // 拒绝创建(不必设置,不启用) + public byte[] reserved = new byte[256]; // 预留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bNoCreate", "reserved"}); + } + + public static class ByReference extends STU_PERSON_DELETE_INFO_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PERSON_DELETE_INFO_PARAM implements Structure.ByValue + { + } + }; + + // 添加人脸图片操作输入参数 + public static class STU_FACE_IMAGE_ADD_IN_PARAM extends Structure + { + public int nGroupID; // 人脸组ID + public int nPersonID; // 人员ID + public byte[] szImageFile = new byte[260]; // 本地图片路径 + public int bNoCreate; // 拒绝创建(不必设置,不启用) + public int bEncSend; // TRUE - 加密发送;FALSE - 非加密发送 + // 需要设备支持加减密发送 + public byte[] reserved = new byte[56]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nGroupID", "nPersonID", + "szImageFile", "bNoCreate", "bEncSend", "reserved"}); + } + + public static class ByReference extends STU_FACE_IMAGE_ADD_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_IMAGE_ADD_IN_PARAM implements Structure.ByValue + { + } + }; + + // 添加人脸图片操作输出参数 + public static class STU_FACE_IMAGE_ADD_OUT_PARAM extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码 0 - 无错误 + public byte[] szFaceToken = new byte[64]; // 新的人脸标识码 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "nError", + "szFaceToken", "reserved"}); + } + + public static class ByReference extends STU_FACE_IMAGE_ADD_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_IMAGE_ADD_OUT_PARAM implements Structure.ByValue + { + } + }; + + // 添加人脸图片操作输入参数 + public static class STU_FACE_IMAGE_ADD_IN_PARAM_EX extends Structure + { + public int nGroupID; // 人脸组ID + public int nPersonID; // 人员ID + public STU_FACE_IMAGE stuFaceImage; // 人脸图片 + public int bNoCreate; // 拒绝创建(不必设置,不启用) + public int bEncSend; // TRUE - 加密发送;FALSE - 非加密发送 + // 需要设备支持加减密发送 + public byte[] reserved = new byte[56]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nGroupID", "nPersonID", + "stuFaceImage", "bNoCreate", "bEncSend", "reserved"}); + } + + public static class ByReference extends STU_FACE_IMAGE_ADD_IN_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_IMAGE_ADD_IN_PARAM_EX implements Structure.ByValue + { + } + }; + + // 添加人脸图片操作输出参数 + public static class STU_FACE_IMAGE_ADD_OUT_PARAM_EX extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码 0 - 无错误 + public byte[] szFaceToken = new byte[64]; // 新的人脸标识码 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "nError", "szFaceToken", "reserved"}); + } + + public static class ByReference extends STU_FACE_IMAGE_ADD_OUT_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_IMAGE_ADD_OUT_PARAM_EX implements Structure.ByValue + { + } + }; + + public static class STU_FACE_IMAGE_DELETE_IN_PARAM extends Structure + { + public byte[] szFaceToken = new byte[64]; // 人脸标识码 + public int bNoCreate; // 拒绝创建(不必设置,不启用) + public byte[] reserved = new byte[60]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szFaceToken", "bNoCreate", "reserved"}); + } + + public static class ByReference extends STU_FACE_IMAGE_DELETE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_IMAGE_DELETE_IN_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_IMAGE_DELETE_OUT_PARAM extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码,0-无错误 + public byte[] reserved = new byte[16]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "nError", "reserved"}); + } + + public static class ByReference extends STU_FACE_IMAGE_DELETE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_IMAGE_DELETE_OUT_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_IMAGE_UPDATE_IN_PARAM extends Structure + { + public byte[] szFaceToken = new byte[64]; // 人脸标识码 + public byte[] szImageFile = new byte[260]; // 需更新的人脸图片路径 + public int bNoCreate; // 拒绝创建(不必设置,不启用) + public int bEncSend; // TRUE - 加密发送;FALSE - 非加密发送 + // 需要设备支持加减密发送 + public byte[] reserved = new byte[56]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szFaceToken", "szImageFile", "bNoCreate", + "bEncSend", "reserved"}); + } + + public static class ByReference extends STU_FACE_IMAGE_UPDATE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_IMAGE_UPDATE_IN_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_IMAGE_UPDATE_OUT_PARAM extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码,0-无错误 + public byte[] szFaceToken = new byte[64]; // 新的人脸标识码 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "nError", + "szImageFile", "reserved"}); + } + + public static class ByReference extends STU_FACE_IMAGE_UPDATE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_IMAGE_UPDATE_OUT_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_IMAGE_UPDATE_IN_PARAM_EX extends Structure + { + public byte[] szFaceToken = new byte[64]; // 人脸标识码 + public STU_FACE_IMAGE stuFaceImage; // 需要更新的人脸图片 + public int bNoCreate; // 拒绝创建(不必设置,不启用) + public int bEncSend; // TRUE - 加密发送;FALSE - 非加密发送 + // 需要设备支持加减密发送 + public byte[] reserved = new byte[56]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szFaceToken", "stuFaceImage", "bNoCreate", + "bEncSend", "reserved"}); + } + + public static class ByReference extends STU_FACE_IMAGE_UPDATE_IN_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_IMAGE_UPDATE_IN_PARAM_EX implements Structure.ByValue + { + } + }; + + public static class STU_FACE_IMAGE_UPDATE_OUT_PARAM_EX extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码,0-无错误 + public byte[] szFaceToken = new byte[64]; // 新的人脸标识码 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "nError", "szFaceToken", "reserved"}); + } + + public static class ByReference extends STU_FACE_IMAGE_UPDATE_OUT_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_IMAGE_UPDATE_OUT_PARAM_EX implements Structure.ByValue + { + } + }; + + public static class STU_FACE_BIND_GROUP_IN_PARAM extends Structure + { + public int nGroupID; // 绑定人脸组的ID + public byte[] szFaceToken = new byte[64]; // 人脸标识码 + public int bNoCreate; // 拒绝创建(不必设置,不启用) + public int bEncrypt; // 数据是否加密收发 + public byte[] reserved = new byte[56]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nGroupID", "szFaceToken", "bNoCreate", "bEncrypt", "reserved"}); + } + + public static class ByReference extends STU_FACE_BIND_GROUP_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_BIND_GROUP_IN_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_BIND_GROUP_OUT_PARAM extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码 0 - 无错误 + public byte[] reserved = new byte[16]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "nError", "reserved"}); + } + + public static class ByReference extends STU_FACE_BIND_GROUP_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_BIND_GROUP_OUT_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_UNBIND_GROUP_IN_PARAM extends Structure + { + public int nGroupID; // 人脸组ID + public byte[] szFaceToken = new byte[64]; // 人脸标识码 + public int bNoCreate; // 拒绝创建(不必设置,不启用) + public int bEncrypt; // 数据是否加密收发 + public byte[] reserved = new byte[60]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nGroupID", "szFaceToken", "bNoCreate", "bEncrypt", "reserved"}); + } + + public static class ByReference extends STU_FACE_UNBIND_GROUP_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_UNBIND_GROUP_IN_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_UNBIND_GROUP_OUT_PARAM extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码,0-无错误 + public byte[] reserved = new byte[16]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "nError", "reserved"}); + } + + public static class ByReference extends STU_FACE_UNBIND_GROUP_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_UNBIND_GROUP_OUT_PARAM implements Structure.ByValue + { + } + }; + + // 根据人员证件信息删除人员输入参数 + public static class STU_PERSON_DELETE_BYID_IN_PARAM extends Structure + { + public byte[] szCertificateType = new byte[64]; // 证件类型 + public byte[] szID = new byte[128]; // 证件号码 + public int bNoCreate; // 拒绝创建(不必设置,不启用) + public byte[] reserved = new byte[60]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szCertificateType", "szID", "bNoCreate", "reserved"}); + } + + public static class ByReference extends STU_PERSON_DELETE_BYID_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PERSON_DELETE_BYID_IN_PARAM implements Structure.ByValue + { + } + }; + + // 根据人员证件信息删除人员输出参数 + public static class STU_PERSON_DELETE_BYID_OUT_PARAM extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码,0-无错误 + public byte[] reserved = new byte[16]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "nError", "reserved"}); + } + + public static class ByReference extends STU_PERSON_DELETE_BYID_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PERSON_DELETE_BYID_OUT_PARAM implements Structure.ByValue + { + } + }; + + // 根据人员证件信息删除指定人脸组中人员输入参数 + public static class STU_PERSON_DELETE_BYID_FROM_GROUP_IN_PARAM extends Structure + { + public byte[] szGroupName = new byte[128]; // 人脸组名称 + public byte[] szCertificateType = new byte[64]; // 证件类型 + public byte[] szID = new byte[128]; // 证件号 + public int bNoCreate; // 拒绝创建(不必设置,不启用) + public byte[] reserved = new byte[60]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szGroupName", "szCertificateType", "szID", "bNoCreate", "reserved"}); + } + + public static class ByReference extends STU_PERSON_DELETE_BYID_FROM_GROUP_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PERSON_DELETE_BYID_FROM_GROUP_IN_PARAM implements Structure.ByValue + { + } + }; + + // 根据人员证件信息删除指定人脸组中人员输出参数 + public static class STU_PERSON_DELETE_BYID_FROM_GROUP_OUT_PARAM extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码,0-无错误 + public byte[] reserved = new byte[16]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "nError", "reserved"}); + } + + public static class ByReference extends STU_PERSON_DELETE_BYID_FROM_GROUP_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PERSON_DELETE_BYID_FROM_GROUP_OUT_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_INFO_FIND_CONDITON extends Structure + { + public int bEnable; // 是否启用查询条件, 如果不启用则查询所有 + public int nPersonID; // 人员ID, -1 表示无效 + public byte[] szName = new byte[128]; // 人员名, 空表示无效 + public int emSexType; // 人员性别,-1(UNKNOWN)表示无效,EM_SEX_TYPE + public STU_TIME stMinBirthday; // 人员生日范围下限, 年份为 0 时无效 + public STU_TIME stMaxBirthday; // 人员生日范围上限, 年份为 0 时无效 + public byte[] szCertificateType = new byte[64]; // 人员证件类型,空表示无效 + public byte[] szID = new byte[128]; // 人员证件 ID,空表示无效 + public byte[] reserved1 = new byte[32]; // 保留参数1 + public byte[] szCountry = new byte[64]; // 国别,空表示无效 + public byte[] szProvince = new byte[64]; // 省份,空表示无效 + public byte[] szCity = new byte[128]; // 城市,控表示无效 + public byte[] reserved2 = new byte[1024]; // 保留参数2 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "bEnable", "nPersonID", "szName", + "emSexType", "stMinBirthday", "stMaxBirthday", + "szCertificateType", "szID", "reserved1", + "szCountry", "szProvince", "szCity", "reserved2"}); + } + + public static class ByReference extends STU_FACE_INFO_FIND_CONDITON implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_INFO_FIND_CONDITON implements Structure.ByValue + { + } + }; + + public static class STU_FACE_INFO_FIND_IN_PARAM extends Structure + { + public int nFindInstance; // 查找实例 + public int nGroupID; // 人脸组 ID + public STU_FACE_INFO_FIND_CONDITON stCondition; // 人脸信息查询条件 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nFindInstance", "nGroupID", "stCondition"}); + } + + public static class ByReference extends STU_FACE_INFO_FIND_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_INFO_FIND_IN_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_INFO_FIND_OUT_PARAM extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码,0-无错误 + public byte[] reserved = new byte[16]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "nError", "reserved"}); + } + + public static class ByReference extends STU_FACE_INFO_FIND_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_INFO_FIND_OUT_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_INFO_FIND_RESULT_IN_PARAM extends Structure + { + public int nFindInstance; // 查找实例 + public short nOffset; // 查询结果偏移, + public short nCount; // 希望获取的查询条数, 不大于 MAX_ONCE_QUERY_PERSON_NUM + public int bEncSend; // TRUE - 加密发送;FALSE - 非加密发送 + // 需要设备支持加减密发送 + public byte[] reserved = new byte[28]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "nFindInstance", "nOffset", "nCount", "bEncSend", "reserved"}); + } + + public static class ByReference extends STU_FACE_INFO_FIND_RESULT_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_INFO_FIND_RESULT_IN_PARAM implements Structure.ByValue + { + } + }; + + // 人脸图片和特征值数据 + public static class STU_FACE_FEATURE_DATA extends Structure + { + public int nImageSize; // 图片数据大小 + public Pointer pImageBuffer; // 图片数据,外部申请和释放 + public int nFeatureSize; // 特征值数据大小 + public Pointer pFeatureBuffer; // 特征值数据,外部申请和释放 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nImageSize", "pImageBuffer", "nFeatureSize", "pFeatureBuffer"}); + } + + public static class ByReference extends STU_FACE_FEATURE_DATA implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_FEATURE_DATA implements Structure.ByValue + { + } + }; + + // 人员信息&人脸图片&特征值信息 + public static class STU_PERSON_FACE_FEATURE_INFO extends Structure + { + public byte[] szCertificateType = new byte[64]; // 证件类型 + public byte[] szID = new byte[128]; // 证件编号 + public int nFaceCount; // 人脸图片数量 + // 人脸图片&特征值数据 + public STU_FACE_FEATURE_DATA[] stuFaceFeatureData = new STU_FACE_FEATURE_DATA[NetDefs.MAX_PERSON_FACE_NUM]; + // 人脸特征值编码类型,0:binary, 1:base64,缺省默认二进, EM_FACE_FEATURE_ENCODE_TYPE + public int emFeatDataEncodeType; + + public Pointer lpstPersonInfo; // STU_PERSON_INFO,人员信息(上面的证件类型,编号已填写,这里不需要再添加) + + public byte[] reserved = new byte[116]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szCertificateType", "szID", "nFaceCount", + "stuFaceFeatureData", "emFeatDataEncodeType", "lpstPersonInfo", "reserved"}); + } + + public static class ByReference extends STU_PERSON_FACE_FEATURE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_PERSON_FACE_FEATURE_INFO implements Structure.ByValue + { + } + }; + + // 人脸 Token 结果 + public static class STU_FACE_TOKEN_RESULT extends Structure + { + public int nResult; // 0x00000000 - 入库成功; + // 0x00090007 - 人员信息导入失败; + // 0x00090008 - 图片信息导入失败; + // 0x0009000d - 特征值导入失败; + // 0x00090009 - 人脸绑定失败; + // 0x00090001 - 未知错误 + public byte[] szToken = new byte[64]; // 人脸 Token 值 + public byte[] reserved = new byte[16]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nResult", "szToken", "reserved"}); + } + + public static class ByReference extends STU_FACE_TOKEN_RESULT implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_TOKEN_RESULT implements Structure.ByValue + { + } + }; + + // 人脸图片&特征值信息添加结果信息 + public static class STU_FACE_FEATURE_RESULT extends Structure + { + public int nPersonID; // 设备内部生成的人员ID号 + public byte[] szCertificateType = new byte[64]; // 证件类型 + public byte[] szID = new byte[128]; // 证件编号 + public int nTokenCount; // 人脸 Token 数量 + public STU_FACE_TOKEN_RESULT[] stuTokenArr = new STU_FACE_TOKEN_RESULT[NetDefs.MAX_PERSON_FACE_NUM]; // Token 结果 + public byte[] reserved = new byte[128]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nPersonID", "szCertificateType", "szID", + "nTokenCount", "stuTokenArr", "reserved"}); + } + + public static class ByReference extends STU_FACE_FEATURE_RESULT implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_FEATURE_RESULT implements Structure.ByValue + { + } + }; + + // 多个人脸图&对应特征值添加输入参数 + public static class STU_MULTI_FACE_FEATURE_ADD_IN_PARAM extends Structure + { + public byte[] szGroupName = new byte[128]; // 底库组名称, 即底库组别名 + public byte[] szVersion = new byte[64]; // 版本信息 + public int nPersonNumber; // 添加的人员数量,不能超过 + // 人员信息&人脸图片&特征值信息数组 + public STU_PERSON_FACE_FEATURE_INFO[] stuInfo = new STU_PERSON_FACE_FEATURE_INFO[NetDefs.MAX_PERSON_FACE_FEATURE_NUM]; + public int bNoCreate; // 拒绝创建(不必设置,不启用) + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szGroupName", "szVersion", "nPersonNumber", + "stuInfo", "bNoCreate", "reserved"}); + } + + public static class ByReference extends STU_MULTI_FACE_FEATURE_ADD_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_MULTI_FACE_FEATURE_ADD_IN_PARAM implements Structure.ByValue + { + } + }; + + // 多个人脸图&对应特征值添加输出参数 + public static class STU_MULTI_FACE_FEATURE_ADD_OUT_PARAM extends Structure + { + public int nError; // 错误码 0-无错误 + public int nResultCount; // 实际结果个数 + // 人脸图片&特征值添加结果 + public STU_FACE_FEATURE_RESULT[] stuResult = new STU_FACE_FEATURE_RESULT[NetDefs.MAX_PERSON_FACE_FEATURE_NUM]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nError", "nResultCount", "stuResult"}); + } + + public static class ByReference extends STU_MULTI_FACE_FEATURE_ADD_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_MULTI_FACE_FEATURE_ADD_OUT_PARAM implements Structure.ByValue + { + } + }; + + // 7020-多个人脸图&对应特征值添加提交结束参数 + public static class STU_ADD_FEACE_FEATURE_COMMIT_PARAM extends Structure + { + public int bNoCreate; // 拒绝创建(不必设置,不启用) + public byte[] reserved = new byte[64]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bNoCreate", "reserved"}); + } + + public static class ByReference extends STU_ADD_FEACE_FEATURE_COMMIT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_ADD_FEACE_FEATURE_COMMIT_PARAM implements Structure.ByValue + { + } + }; + + ////////////////////////////////////////////////////////////////////////////////////////// + public static class STU_FACE_IMAGE_INFO extends Structure + { + public int nGroupID; // 绑定的人脸组ID + public int nPersonID; // 人员ID + public byte[] szFaceToken = new byte[64]; // 人脸标识符 + public int nState; // 人脸状态,0-异常,1-正常, 2-建模失败 + public STU_TIME stTime; // 人脸入库时间 + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "nGroupID", "nPersonID", "szFaceToken", + "nState", "stTime", "reserved"}); + } + + public static class ByReference extends STU_FACE_IMAGE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_IMAGE_INFO implements Structure.ByValue + { + } + }; + + // 人员人脸特征值信息 + public static class STU_FACE_FEATURE_INFO extends Structure + { + // 人脸特征值 String,base64编码格式 + public byte[] szBase64Feature = new byte[1024]; + // 保留参数 + public byte[] reserved = new byte[256]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szBase64Feature", "reserved"}); + } + + public static class ByReference extends STU_FACE_FEATURE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_FEATURE_INFO implements Structure.ByValue + { + } + }; + + // 人员人脸图像信息 + public static class STU_PERSON_FACE_INFO extends Structure + { + // 人员信息 + public STU_PERSON_INFO stPersonInfo; + // 人脸图像实际数目,不大于 MAX_PERSON_FACE_NUM + public int nFaceImageCount; + // 人脸图像信息数组 + public STU_FACE_IMAGE_INFO[] stFaceImageInfoArr = new STU_FACE_IMAGE_INFO[NetDefs.MAX_PERSON_FACE_NUM]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "stPersonInfo", "nFaceImageCount", "stFaceImageInfoArr"}); + } + + public static class ByReference extends STU_PERSON_FACE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_PERSON_FACE_INFO implements Structure.ByValue + { + } + }; + + // 人员人脸图像信息EX + public static class STU_PERSON_FACE_INFO_EX extends Structure + { + // 人员信息 + public STU_PERSON_INFO stPersonInfo; + // 人脸图像实际数目,不大于 MAX_PERSON_FACE_NUM + public int nFaceImageCount; + // 人脸图像信息数组 + public STU_FACE_IMAGE_INFO[] stFaceImageInfoArr = new STU_FACE_IMAGE_INFO[NetDefs.MAX_PERSON_FACE_NUM]; + + // 人脸特征值实际数目,不大于 MAX_PERSON_FACE_NUM + public int nFeatureCount; + // 人脸特征值数组 + public STU_FACE_FEATURE_INFO[] stFaceFeatureInfoArr = new STU_FACE_FEATURE_INFO[NetDefs.MAX_PERSON_FACE_NUM]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stPersonInfo", "nFaceImageCount", "stFaceImageInfoArr", "nFeatureCount", "stFaceFeatureInfoArr"}); + } + + public static class ByReference extends STU_PERSON_FACE_INFO_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_PERSON_FACE_INFO_EX implements Structure.ByValue + { + } + }; + + public static class STU_FACE_INFO_FIND_RESULT_OUT_PARAM extends Structure + { + // 结构体大小 + public int dwSize; + // 错误码,0-无错误 + public int nError; + // 人员人脸信息数组实际大小,不大于 MAX_ONCE_QUERY_PERSON_NUM + public int nPersonFaceInfoArrSize; + // 人员人脸信息数组 + public STU_PERSON_FACE_INFO[] stPersonFaceInfoArr = new STU_PERSON_FACE_INFO[NetDefs.MAX_ONCE_QUERY_PERSON_NUM]; + + public STU_FACE_INFO_FIND_RESULT_OUT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] { + "dwSize", "nError", "nPersonFaceInfoArrSize", "stPersonFaceInfoArr"}); + } + + public static class ByReference extends STU_FACE_INFO_FIND_RESULT_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_INFO_FIND_RESULT_OUT_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_INFO_FIND_RESULT_OUT_PARAM_EX extends Structure + { + // 结构体大小 + public int dwSize; + // 错误码,0-无错误 + public int nError; + // 人员人脸信息数组实际大小,不大于 MAX_ONCE_QUERY_PERSON_NUM + public int nPersonFaceInfoArrSize; + // 人员人脸信息数组 + public STU_PERSON_FACE_INFO_EX[] stPersonFaceInfoArr = new STU_PERSON_FACE_INFO_EX[NetDefs.MAX_ONCE_QUERY_PERSON_NUM]; + + public STU_FACE_INFO_FIND_RESULT_OUT_PARAM_EX() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] { + "dwSize", "nError", "nPersonFaceInfoArrSize", "stPersonFaceInfoArr"}); + } + + public static class ByReference extends STU_FACE_INFO_FIND_RESULT_OUT_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_INFO_FIND_RESULT_OUT_PARAM_EX implements Structure.ByValue + { + } + }; + + public static class STU_FACE_IMAGE_GET_IN_PARAM extends Structure + { + public int nFindInstance; // 查找实例 + public byte[] szFaceToken = new byte[64]; // 人脸标识码 + public byte[] szImageFile = new byte[260]; // 本地图片路径 + public int bEncSend; // TRUE - 加密发送;FALSE - 非加密发送 + // 需要设备支持加减密发送 + public byte[] reserved = new byte[56]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "nFindInstance", "szFaceToken", "szImageFile", "bEncSend", "reserved"}); + } + + public static class ByReference extends STU_FACE_IMAGE_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_IMAGE_GET_IN_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_IMAGE_GET_OUT_PARAM extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码 0-无错误 + public int nImageLength; // 人脸图片大小 + public byte[] szImageFile = new byte[260]; // 人脸图片本地路径 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "dwSize", "nError", "nImageLength", "szImageFile", "reserved"}); + } + + public static class ByReference extends STU_FACE_IMAGE_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_IMAGE_GET_OUT_PARAM implements Structure.ByValue + { + } + }; + + // 查找获取人脸库人脸图片输入参数 + public static class STU_FACE_IMAGE_GET_IN_PARAM_EX extends Structure + { + public int nFindInstance; // 查找实例 + public byte[] szFaceToken = new byte[64]; // 人脸标识码 + public int nInBufSize; // 申请的图片缓存大小,不超过1M + public int bEncSend; // TRUE - 加密发送;FALSE - 非加密发送 + // 需要设备支持加减密发送 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nFindInstance", "szFaceToken", + "nInBufSize", "bEncSend", "reserved"}); + } + + public static class ByReference extends STU_FACE_IMAGE_GET_IN_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_IMAGE_GET_IN_PARAM_EX implements Structure.ByValue + { + } + }; + + // 查找获取人脸库人脸图片输出参数 + public static class STU_FACE_IMAGE_GET_OUT_PARAM_EX extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码 0-无错误 + public Pointer lpOutBuffer; // 人脸图片二进制数据,图片缓存需外部申请,大小为nInBufSize + public int nOutBufSize; // 人脸图片数据大小 + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "nError", + "lpOutBuffer", "nOutBufSize", "reserved"}); + } + + public static class ByReference extends STU_FACE_IMAGE_GET_OUT_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_IMAGE_GET_OUT_PARAM_EX implements Structure.ByValue + { + } + }; + + public static class STU_PERSON_INFO_GET_BYTOKEN_IN_PARAM extends Structure + { + public int nFindInstance; // 查找实例 + public byte[] szFaceToken = new byte[64]; // 人脸标识码 + public int bEncSend; // TRUE - 加密发送;FALSE - 非加密发送 + // 需要设备支持加减密发送 + public byte[] reserved = new byte[60]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nFindInstance", "szFaceToken", "bEncSend", "reserved"}); + } + + public static class ByReference extends STU_PERSON_INFO_GET_BYTOKEN_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PERSON_INFO_GET_BYTOKEN_IN_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_PERSON_INFO_GET_BYTOKEN_OUT_PARAM extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码 0-无错误 + public STU_PERSON_INFO stPersonInfo; // 人员信息 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "nError", "stPersonInfo"}); + } + + public static class ByReference extends STU_PERSON_INFO_GET_BYTOKEN_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PERSON_INFO_GET_BYTOKEN_OUT_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_PERSON_INFO_GET_BYID_IN_PARAM extends Structure + { + public int nFindInstance; // 查找实例 + public byte[] szCertificateType = new byte[64]; // 人员证件类型 + public byte[] szID = new byte[128]; // 人员证件号 + public int bEncSend; // TRUE - 加密发送;FALSE - 非加密发送 + // 需要设备支持加减密发送 + public byte[] reserved = new byte[12]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nFindInstance", "szCertificateType", "szID", + "bEncSend", "reserved"}); + } + + public static class ByReference extends STU_PERSON_INFO_GET_BYID_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PERSON_INFO_GET_BYID_IN_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_PERSON_INFO_GET_BYID_OUT_PARAM extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码 0-无错误 + public STU_PERSON_INFO stPersonInfo; // 人员信息 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "nError", "stPersonInfo"}); + } + + public static class ByReference extends STU_PERSON_INFO_GET_BYID_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PERSON_INFO_GET_BYID_OUT_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_IMAGE_INFO_GET_IN_PARAM extends Structure + { + public int nFindInstance; // 查找实例 + public int nPersonID; // 人员ID + public int bEncSend; // TRUE - 加密发送;FALSE - 非加密发送 + // 需要设备支持加减密发送 + public byte[] reserved = new byte[12]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nFindInstance", "nPersonID", "reserved", "reserved"}); + } + + public static class ByReference extends STU_FACE_IMAGE_INFO_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_IMAGE_INFO_GET_IN_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_IMAGE_INFO_GET_OUT_PARAM extends Structure + { + // 结构体大小 + public int dwSize; + // 错误码,0-无错误 + public int nError; + // 人脸图像实际数目 + public int nFaceImageCount; + // 人脸图像信息数组 + public STU_FACE_IMAGE_INFO[] stFaceImageInfoArr = new STU_FACE_IMAGE_INFO[NetDefs.MAX_PERSON_FACE_NUM]; + + public STU_FACE_IMAGE_INFO_GET_OUT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] { + "dwSize", "nError", "nFaceImageCount", "stFaceImageInfoArr"}); + } + + public static class ByReference extends STU_FACE_IMAGE_INFO_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_IMAGE_INFO_GET_OUT_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_PERSON_NAME_CHECK_IN_PARAM extends Structure + { + public int nFindInstance; // 查找实例 + public byte[] szName = new byte[128]; // 人员名称(不允许带数字后缀) + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "nFindInstance", "szName", "reserved"}); + } + + public static class ByReference extends STU_PERSON_NAME_CHECK_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PERSON_NAME_CHECK_IN_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_PERSON_NAME_CHECK_OUT_PARAM extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码,0-无错误 + public int nSuffix; // 0 表示无重名,其它表示建议后缀 + // 如果 WH,WH1,WH2, 1和2就是建议后缀 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "dwSize", "nError", "nSuffix"}); + } + + public static class ByReference extends STU_PERSON_NAME_CHECK_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PERSON_NAME_CHECK_OUT_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_RECOGNIZE_STATIC_IN_PARAM extends Structure + { + public int nGroupID; // 比对的人脸底库 ID + public byte[] szFaceImagePath = new byte[260]; // 需比对的人脸图路径 + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "nGroupID", "szFaceImagePath", "reserved"}); + } + + public static class ByReference extends STU_FACE_RECOGNIZE_STATIC_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_RECOGNIZE_STATIC_IN_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_REC_STATIC_DETAIL extends Structure + { + public float fSearchScore; // 人脸相似度 [0-100], 值越大相似度越高 + public float fSearchThreshold; // 人脸相似度阈值 [0-100] + public float fLivenessScore; // 活体检测得分 [0-100] + public float fLivenessThreshold; // 活体检测阈值 [0-100] + public byte[] szFaceToken = new byte[64]; // 比对成功的底库人脸图片标识码 + public byte[] reseved1 = new byte[64]; // 保留位1 + public STU_PERSON_INFO stPersonInfo; // 人员信息 + public byte[] reseved2 = new byte[256]; // 保留位2 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "fSearchScore", "fSearchThreshold", "fLivenessScore", + "fLivenessThreshold", "szFaceToken", "reseved1", + "stPersonInfo", "reseved2"}); + } + + public static class ByReference extends STU_FACE_REC_STATIC_DETAIL implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_REC_STATIC_DETAIL implements Structure.ByValue + { + } + }; + + public static class STU_FACE_RECOGNIZE_STATIC_OUT_PARAM extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码,0-无错误 + public int bResult; // 比对结果, TRUE-成功;FALSE-失败 + public int nRealDetailCount; // 实际详细信息数 + // 璇︾粏淇℃伅缁撴灉鏁扮粍 + public STU_FACE_REC_STATIC_DETAIL[] stDetails = new STU_FACE_REC_STATIC_DETAIL[NetDefs.MAX_FACE_REC_STATIC_DETAIL_NUM]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "dwSize", "nError", "bResult", "nRealDetailCount", "stDetails"}); + } + + public static class ByReference extends STU_FACE_RECOGNIZE_STATIC_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_RECOGNIZE_STATIC_OUT_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_REC_REC_FIND_CONDITION extends Structure + { + public int nGroupID; // 人脸组 ID, 0 表示无效 + public int nRecNo; // 人脸比对数据库主键号, -1 表示无效 + public short nPass; // 人脸识别通过标志位 + // -1 表示查询所有 + // 0 表示查询识别不通过的类型 + // 1 表示查询识别通过的类型 + public byte[] reserved1 = new byte[2]; // 保留参数1 + public int nObjectID; // 物体 ID, 0 表示无效 + public STU_TIME stMinTime; // 查询时间范围下限,年份为 0 时无效 + public STU_TIME stMaxTime; // 查询时间范围上限,年份为 0 时无效 + byte[] reserved2 = new byte[16]; // 保留参数2 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "nGroupID", "nRecNo", "nPass", "reserved1", "nObjectID", + "stMinTime", "stMaxTime", "reserved2"}); + } + + public static class ByReference extends STU_FACE_REC_REC_FIND_CONDITION implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_REC_REC_FIND_CONDITION implements Structure.ByValue + { + } + }; + + public static class STU_FACE_REC_REC_FIND_IN_PARAM extends Structure + { + public int nFindInstance; // 记录查找实例 + public STU_FACE_REC_REC_FIND_CONDITION stCondition; // 查询条件 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "nFindInstance", "stCondition", "reserved"}); + } + + public static class ByReference extends STU_FACE_REC_REC_FIND_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_REC_REC_FIND_IN_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_REC_REC_FIND_OUT_PARAM extends Structure + { + public int dwSize; // 结构体大小 + public int nError; // 错误码,0-无错误 + public int nFindHandle; // 人脸识别记录查找句柄 + public byte[] reserved = new byte[16]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "dwSize", "nError", "nFindHandle", "reserved"}); + } + + public static class ByReference extends STU_FACE_REC_REC_FIND_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_REC_REC_FIND_OUT_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_REC_REC_FIND_RESULT_IN_PARAM extends Structure + { + public int nFindInstance; // 记录查找实例 + public short nOffset; // 查询结果偏移 + public short nCount; // 期望查询到的结果条数 + // 不超过 128 + public byte[] reserved = new byte[16]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "nFindInstance", "nOffset", "nCount", "reserved"}); + } + + public static class ByReference extends STU_FACE_REC_REC_FIND_RESULT_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_REC_REC_FIND_RESULT_IN_PARAM implements Structure.ByValue + { + } + }; + + public static class STU_FACE_RECOGNIZE_RESULT extends Structure + { + public int nResultRecNo; // 人脸比对结果记录编号 + public float fSearchScore; // 人脸相似度 [0-100], 值越大相似度越高 + public float fSearchThreshold; // 人脸相似度阈值 [0-100] + public float fLivenessScore; // 活体检测得分 [0-100] + public float fLivenessThreshold; // 活体检测阈值 [0-100] + public byte[] szFaceToken = new byte[64]; // 比对成功的底库人脸图片标识码 + public byte[] szCertificateType = new byte[64]; // 证件类型 + public byte[] szID = new byte[128]; // 证件 ID + public byte[] reserved = new byte[128]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "nResultRecNo", "fSearchScore", "fSearchThreshold", + "fLivenessScore", "fLivenessThreshold", "szFaceToken", + "szCertificateType", "szID", "reserved"}); + } + + public static class ByReference extends STU_FACE_RECOGNIZE_RESULT implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_RECOGNIZE_RESULT implements Structure.ByValue + { + } + }; + + public static class STU_FACE_RECOGNIZE_RECORD_INFO extends Structure + { + public int nRecNo; // 识别记录编号 + public int nGroupID; // 人脸组 ID + public short nPass; // 是否识别通过 -1 表示获取异常 0-正常比对不通过 1-正常比对通过 2-活体比对不通过 + public byte[] reserved1 = new byte[2]; // 保留参数1 + public byte[] szImagePath = new byte[260]; // 设备端识别图片存储路径 + public STU_TIME stTime; // 识别比对时间 + public int nObjectID; // 物体 ID + public byte[] reserved2 = new byte[60]; // 保留参数2 + public int nResultCount; // 人脸比对结果数目 + public STU_FACE_RECOGNIZE_RESULT[] stResultArr = new STU_FACE_RECOGNIZE_RESULT[NetDefs.MAX_FACE_REC_RESULT_NUM]; // 人脸识别结果信息数组 + public byte[] reserved3 = new byte[128]; // 保留参数3 + + public STU_FACE_RECOGNIZE_RECORD_INFO() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] { + "nRecNo", "nGroupID", "nPass", + "reserved1", "szImagePath", "stTime", + "nObjectID", "reserved2", "nResultCount", + "stResultArr", "reserved3"}); + } + + public static class ByReference extends STU_FACE_RECOGNIZE_RECORD_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_RECOGNIZE_RECORD_INFO implements Structure.ByValue + { + } + }; + + public static class STU_FACE_REC_REC_FIND_RESULT_OUT_PARAM extends Structure + { + // 结构体大小 + public int dwSize; + // 错误码,0-无错误 + public int nError; + // 实际查询到的记录条数 + public short nRecordCount; + // 人脸比对记录信息数组 + public STU_FACE_RECOGNIZE_RECORD_INFO[] stRecordInfoArr = new STU_FACE_RECOGNIZE_RECORD_INFO[NetDefs.MAX_ONCE_QUERY_FACE_REC_REC_NUM]; + + public STU_FACE_REC_REC_FIND_RESULT_OUT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] { + "dwSize", "nError", "nRecordCount", "stRecordInfoArr"}); + } + + public static class ByReference extends STU_FACE_REC_REC_FIND_RESULT_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FACE_REC_REC_FIND_RESULT_OUT_PARAM implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + //文件信息 + public static class STU_FILE_DOWNLOAD_PARAM extends Structure + { + public int dwSize; + public int dwFileID; // 文件ID + public int nFileSize; // 查询到的文件大小 + public byte[] szSourceFilePath = new byte[260]; // 查询到的文件路径 + public byte[] szSavedFileName = new byte[260]; // 文件保存路径 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "dwSize", "dwFileID", "nFileSize", "szSourceFilePath", "szSavedFileName"}); + } + + public static class ByReference extends STU_FILE_DOWNLOAD_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_FILE_DOWNLOAD_PARAM implements Structure.ByValue + { + } + } + + // 按文件下载输入参数 + public static class STU_IN_MULTI_FILE_DOWNLOAD_PARAM extends Structure + { + public int dwSize; + public int nFileCount; // 待下载文件数 + public Pointer pFileInfos; // 待下载文件信息, STU_FILE_DOWNLOAD_PARAM + public fMultiFileDownLoadPosCallBack cbPosCallBack; // 进度回调函数 + public LLONG dwUserData; // 用户数据 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "dwSize", "nFileCount", "pFileInfos", "cbPosCallBack", "dwUserData"}); + } + + public static class ByReference extends STU_IN_MULTI_FILE_DOWNLOAD_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_IN_MULTI_FILE_DOWNLOAD_PARAM implements Structure.ByValue + { + } + } + + // 按文件下载输出参数 + public static class STU_OUT_MULTI_FILE_DOWNLOAD_PARAM extends Structure + { + public int dwSize; + public LLONG lDownLoadHandle; // 下载句柄 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "dwSize", "lDownLoadHandle"}); + } + + public static class ByReference extends STU_OUT_MULTI_FILE_DOWNLOAD_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_OUT_MULTI_FILE_DOWNLOAD_PARAM implements Structure.ByValue + { + } + } + + // 按时间下载输入参数 + public static class STU_IN_MULTI_FILE_DOWNLOAD_BY_TIME_PARAM extends Structure + { + public int nChannel; // 通道号 + public STU_TIME stStartTime; // 开始时间 + public STU_TIME stEndTime; // 结束时间 + public int emVStreamType; // 码流类型, EM_VIDEO_STREAM_TYPE + public int nVRecTypeCount; // 实际需要查询的类型数量,最大MAX_V_REC_TYPE_COUNT个 + public int[] emVRecTypes = new int[NetDefs.MAX_V_REC_TYPE_COUNT]; // 录像文件类型,每种类型指定一次即可, EM_VIDEO_RECORD_TYPE + public fMultiFileDownLoadByTimePosCallBack cbPosCallBack; // 进度回调函数 + public byte[] szSavePath = new byte[NetDefs.MAX_PATH]; // 录像文件保存路径,需结合 'bMultiDownload' 字段使用 + // 多文件下载时 - 指定到文件夹,需保证文件夹路径存在 + // 单文件下载时 - 指定到文件名,文件自动创建 + public LLONG dwUserData; // 用户数据 + public int bMultiDownload; // 是否按多文件下载,TRUE-多文件,FALSE-单文件 + public byte[] reserved = new byte[128]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "stStartTime", "stEndTime", + "emVStreamType", "nVRecTypeCount", "emVRecTypes", "cbPosCallBack", + "szSavePath", "dwUserData", "bMultiDownload", "reserved"}); + } + + public static class ByReference extends STU_IN_MULTI_FILE_DOWNLOAD_BY_TIME_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_IN_MULTI_FILE_DOWNLOAD_BY_TIME_PARAM implements Structure.ByValue + { + } + } + + // 按时间下载输出参数 + public static class STU_OUT_MULTI_FILE_DOWNLOAD_BY_TIME_PARAM extends Structure + { + public int dwSize; + public LLONG lDownLoadHandle; // 下载句柄 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "lDownLoadHandle"}); + } + + public static class ByReference extends STU_OUT_MULTI_FILE_DOWNLOAD_BY_TIME_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_OUT_MULTI_FILE_DOWNLOAD_BY_TIME_PARAM implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 当前下载文件结构化信息 + public static class STU_MULTI_DOWNLOAD_PROC_FILE_INFO extends Structure + { + // 当前正在下载的文件的索引,从0开始 + public int dwFileID; + // 当前正在下载的文件的总数据大小 + public int dwFileTotalSize; + // 当前正在下载的文件已下载的数据大小 + public int dwDownLoadSize; + // 当前数据,回调结束buffer会被清除,请注意保存, BYTE* + public Pointer lpBuffer; + // 当前数据大小 + public int nBufLen; + // 保留字节 + public byte[] reserved = new byte[1024]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwFileID", "dwFileTotalSize", "dwDownLoadSize", + "lpBuffer", "nBufLen", "reserved"}); + } + + public static class ByReference extends STU_MULTI_DOWNLOAD_PROC_FILE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_MULTI_DOWNLOAD_PROC_FILE_INFO implements Structure.ByValue + { + } + } + + // 录像下载Ex + // 文件信息Ex + public static class STU_FILE_DOWNLOAD_PARAM_EX extends Structure + { + public int dwSize; + public int dwFileID; // 文件ID + public int nFileSize; // 查询到的文件大小 + public byte[] szSourceFilePath = new byte[NetDefs.MAX_PATH]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "dwFileID", "nFileSize", "szSourceFilePath"}); + } + + public static class ByReference extends STU_FILE_DOWNLOAD_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_FILE_DOWNLOAD_PARAM_EX implements Structure.ByValue + { + } + } + + // 按文件下载输入参数Ex + public static class STU_IN_MULTI_FILE_DOWNLOAD_PARAM_EX extends Structure + { + public int dwSize; + public int nFileCount; // 待下载文件数 + public Pointer pFileInfos; // 待下载文件信息, STU_FILE_DOWNLOAD_PARAM_EX* + public fMultiFileDownLoadPosCallBackEx cbPosCallBack; // 进度回调函数 + public LLONG dwUserData; // 用户数据 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "nFileCount", "pFileInfos", "cbPosCallBack", "dwUserData"}); + } + + public static class ByReference extends STU_IN_MULTI_FILE_DOWNLOAD_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_IN_MULTI_FILE_DOWNLOAD_PARAM_EX implements Structure.ByValue + { + } + } + + // 按文件下载输出参数Ex + public static class STU_OUT_MULTI_FILE_DOWNLOAD_PARAM_EX extends Structure + { + public int dwSize; + public LLONG lDownLoadHandle; // 下载句柄 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "lDownLoadHandle"}); + } + + public static class ByReference extends STU_OUT_MULTI_FILE_DOWNLOAD_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_OUT_MULTI_FILE_DOWNLOAD_PARAM_EX implements Structure.ByValue + { + } + } + + // 按时间下载输入参数Ex + public static class STU_IN_MULTI_FILE_DOWNLOAD_BY_TIME_PARAM_EX extends Structure + { + public int nChannel; // 通道号 + public STU_TIME stStartTime; // 开始时间 + public STU_TIME stEndTime; // 结束时间 + public int emVStreamType; // 码流类型, EM_VIDEO_STREAM_TYPE + public int nVRecTypeCount; // 实际需要查询的类型数量,最大MAX_V_REC_TYPE_COUNT个 + public int[] emVRecTypes = new int[NetDefs.MAX_V_REC_TYPE_COUNT]; // 录像文件类型,每种类型指定一次即可, EM_VIDEO_RECORD_TYPE + public fMultiFileDownLoadByTimePosCallBackEx cbPosCallBack; // 进度回调函数 + public LLONG dwUserData; // 用户数据 + public byte[] reserved = new byte[128]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "stStartTime", "stEndTime", + "emVStreamType", "nVRecTypeCount", "emVRecTypes", "cbPosCallBack", + "dwUserData", "reserved"}); + } + + public static class ByReference extends STU_IN_MULTI_FILE_DOWNLOAD_BY_TIME_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_IN_MULTI_FILE_DOWNLOAD_BY_TIME_PARAM_EX implements Structure.ByValue + { + } + } + + // 按时间下载输出参数Ex + public static class STU_OUT_MULTI_FILE_DOWNLOAD_BY_TIME_PARAM_EX extends Structure + { + public int dwSize; + public LLONG lDownLoadHandle; // 下载句柄 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "lDownLoadHandle"}); + } + + public static class ByReference extends STU_OUT_MULTI_FILE_DOWNLOAD_BY_TIME_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_OUT_MULTI_FILE_DOWNLOAD_BY_TIME_PARAM_EX implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 单个文件上传参数 + public static class STU_UPLOAD_FILE_PARAM extends Structure + { + // 文件上传路径, 必须为"/mnt/mtd/Advertisement/", "/mnt/facedb/standby/picture/", "/mnt/facedb/standby/movie/"三个目录之一 + public byte[] szDirPath = new byte[NetDefs.MAX_PATH]; + // 文件名 + public byte[] szFileName = new byte[128]; + // 文件缓存 + public Pointer lpBuffer; + // 文件缓存字节数 + public int nBufferLen; + + // 进度回调函数 + public NetDelegates.fFileUploadPosCallBack cbPosCallBack; + // 用户数据 + public LONG dwUserData; + + // 保留参数 + public byte[] reserved = new byte[256]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szDirPath", "szFileName", "szFileName", + "nBufferLen", "cbPosCallBack", "dwUserData", "reserved"}); + } + + public static class ByReference extends STU_UPLOAD_FILE_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_UPLOAD_FILE_PARAM implements Structure.ByValue + { + } + } + + // 删除文件参数 + public static class STU_REMOVE_FILE_PARAM extends Structure + { + // 需要删除的文件信息条件, STU_FILE_INFO[]数组 + public Pointer pFileInfos; + // 需要删除的文件数量 + public int nFileCount; + // 保留参数 + public byte[] reserved = new byte[256]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"pFileInfos", "nFileCount", "reserved"}); + } + + public static class ByReference extends STU_REMOVE_FILE_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_REMOVE_FILE_PARAM implements Structure.ByValue + { + } + } + + // 文件类型筛选 + public static class STU_FILE_FILTER extends Structure + { + // 后缀名 .jpg, .h264 + public byte[] szExt = new byte[32]; + // 保留参数 + public byte[] reserved = new byte[256]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szExt", "reserved"}); + } + + public static class ByReference extends STU_FILE_FILTER implements Structure.ByReference + { + } + + public static class ByValue extends STU_FILE_FILTER implements Structure.ByValue + { + } + } + + // 文件预查找输入参数 + public static class STU_PRE_FIND_FILES_IN_PARAM extends Structure + { + // 文件目录 + public byte[] szDirPath = new byte[NetDefs.MAX_PATH]; + // 文件筛选信息 + public STU_FILE_FILTER[] stFilters = new STU_FILE_FILTER[NetDefs.MAX_FILE_FILTER_COUNT]; + // 保留参数 + public byte[] reserved = new byte[256]; + + public STU_PRE_FIND_FILES_IN_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"szDirPath", "stFilters", "reserved"}); + } + + public static class ByReference extends STU_PRE_FIND_FILES_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PRE_FIND_FILES_IN_PARAM implements Structure.ByValue + { + } + } + + // 文件预查找输出参数 + public static class STU_PRE_FIND_FILES_OUT_PARAM extends Structure + { + // 查找到的文件数量 + public int nFileCount; + // 保留参数 + public byte[] reserved = new byte[256]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nFileCount", "reserved"}); + } + + public static class ByReference extends STU_PRE_FIND_FILES_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PRE_FIND_FILES_OUT_PARAM implements Structure.ByValue + { + } + } + + // 单个文件下载信息 + public static class STU_DOWNLOAD_FILE_PARAM extends Structure + { + // 文件名 - 全路径 + public byte[] szFileName = new byte[NetDefs.MAX_PATH]; + // 本地保存路径 - 路径为空时不保存 + public byte[] szSaveName = new byte[NetDefs.MAX_PATH]; + // 进度回调函数 - 返回接收到的数据 + public NetDelegates.fFileDownloadPosCallBack cbPosCallBack; + // 用户数据 + public LONG dwUserData; + // 保留参数 + public byte[] reserved = new byte[128]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szFileName", "szSaveName", "cbPosCallBack", + "dwUserData", "reserved"}); + } + + public static class ByReference extends STU_DOWNLOAD_FILE_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOWNLOAD_FILE_PARAM implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + //修改用户时.只支持修改备注信息和用户级别,不支持修改用户名和密码 + public static class STU_CFG_USER_INFO extends Structure + { + public int nUserLevel; // 用户级别,0是管理员,1是操作者,2是普通用户,管理员无法删除 + public byte[] cUserName = new byte[32]; // 用户名 + public byte[] cPassword = new byte[32]; // 密码 + public byte[] cComment = new byte[32]; // 备注信息 + public byte[] reserved = new byte[16]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "nUserLevel", "cUserName", "cPassword", "cComment", "reserved"}); + } + + public static class ByReference extends STU_CFG_USER_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_USER_INFO implements Structure.ByValue + { + } + } + + // 获取用户信息 + public static class STU_CFG_USER_GET extends Structure + { + public int uCount; // 需要获取的个数 + public int uOffset; // 查询起始偏移 + public int uActualCount; // 实际获取到的数量 + public STU_CFG_USER_INFO[] stuUserInfo = new STU_CFG_USER_INFO[NetDefs.MAX_DEVICE_USER_ACCOUNT_NUM]; // 信息列表,一次最多可查找10个 + + public STU_CFG_USER_GET() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"uCount", "uOffset", "uActualCount", "stuUserInfo"}); + } + + public static class ByReference extends STU_CFG_USER_GET implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_USER_GET implements Structure.ByValue + { + } + } + + //用于设置用户 + public static class STU_CFG_USER_SET extends Structure + { + public byte bOperType; // 1:增加,2:删除,3:修改 + public byte[] reserved = new byte[3]; // 保留位 + public STU_CFG_USER_INFO stuUserInfo; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "bOperType", "reserved", "stuUserInfo"}); + } + + public static class ByReference extends STU_CFG_USER_SET implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_USER_SET implements Structure.ByValue + { + } + } + + // 用于增加用户 + public static class STU_CFG_ADD_USER extends Structure + { + public int nUserLevel; // 用户级别,0是管理员,1是操作者,2是普通用户,管理员无法删除 + public byte[] cUserName = new byte[32]; // 用户名 + public byte[] cPassword = new byte[32]; // 密码 + public byte[] cComment = new byte[32]; // 备注信息 + public byte[] reserved = new byte[64]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "nUserLevel", "cUserName", "cPassword", "cComment", "reserved"}); + } + + public static class ByReference extends STU_CFG_ADD_USER implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ADD_USER implements Structure.ByValue + { + } + } + + // 用于删除用户 + public static class STU_CFG_DELETE_USER extends Structure + { + public byte[] cUserName = new byte[32]; // 用户名 + public byte[] reserved = new byte[32]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"cUserName", "reserved"}); + } + + public static class ByReference extends STU_CFG_DELETE_USER implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_DELETE_USER implements Structure.ByValue + { + } + } + + // 用于修改用户 + public static class STU_CFG_MODIFY_USER extends Structure + { + public int nUserLevel; // 用户级别,0是管理员,1是操作者,2是普通用户,管理员无法删除 + public byte[] cComment = new byte[32]; // 备注信息 + public byte[] cUserName = new byte[32]; // 用户名 + public byte[] cOldPassword = new byte[32]; // 密码 + public byte[] cNewPassword = new byte[32]; // 新的密码 + public byte[] reserved = new byte[64]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "nUserLevel", "cComment", "cUserName", "cOldPassword", "cNewPassword", "reserved"}); + } + + public static class ByReference extends STU_CFG_MODIFY_USER implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_MODIFY_USER implements Structure.ByValue + { + } + } + + // 单条在线用户信息 + public static class STU_CFG_USER_ONLINE_ITEM extends Structure + { + public int nUserLevel; + public byte[] cClientAddr = new byte[64]; + public byte[] cClientType = new byte[32]; + public byte[] cLoginTime = new byte[32]; + public byte[] cUserName = new byte[32]; + public byte[] reserved = new byte[16]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] { + "nUserLevel", "cClientAddr", "cClientType", "cLoginTime", "cUserName", "reserved"}); + } + + public static class ByReference extends STU_CFG_USER_ONLINE_ITEM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_USER_ONLINE_ITEM implements Structure.ByValue + { + } + } + + // 所有在线用户信息 + public static class STU_CFG_USER_ONLINE_ITEMS extends Structure + { + public int uCount; // 需要获取的个数 + public int uOffset; // 查询起始偏移 + public int uActualCount; // 实际获取到的数量 + public STU_CFG_USER_ONLINE_ITEM[] stuUserInfo = new STU_CFG_USER_ONLINE_ITEM[NetDefs.MAX_DEVICE_ONLINE_USER_NUM]; // 信息列表,一次最多可查找10个 + + public STU_CFG_USER_ONLINE_ITEMS() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"uCount", "uOffset", "uActualCount", "stuUserInfo"}); + } + + public static class ByReference extends STU_CFG_USER_ONLINE_ITEMS implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_USER_ONLINE_ITEMS implements Structure.ByValue + { + } + } + + // 文件信息 + public static class STU_T_FILE extends Structure + { + // 通道号 + public int channel; + // 文件名 + public byte[] filename = new byte[240]; + // 文件大小 + public int size; + // 开始时间 + public STU_TIME starttime; + // 结束时间 + public STU_TIME endtime; + // 抓拍时间 + public STU_TIME snaptime; + // 文件类型,EM_ST_FILE_TYPE + public int filetype; + // 视频码流类型,EM_VIDEO_STREAM_TYPE + public int emVStreamType; + // 事件信息,Json格式数组 + public Pointer pEvents; + // 预留位 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"channel", "filename", + "size", "starttime", "endtime", "snaptime", + "filetype", "emVStreamType", "pEvents", "reserved"}); + } + + public static class ByReference extends STU_T_FILE implements Structure.ByReference + { + } + + public static class ByValue extends STU_T_FILE implements Structure.ByValue + { + } + } + + // 按时间回放 + public static class STU_RECORD_BY_TIME extends Structure + { + // 通道号 + public int channel; + // 开始时间 + public STU_TIME starttime; + // 结束时间 + public STU_TIME endtime; + // 视频码流类型, EM_VIDEO_STREAM_TYPE + public int emVStreamType; + // 事件信息数量 + public int nEventCount; + // 事件信息, EM_VIDEO_RECORD_TYPE + public int[] emEventTypes = new int[NetDefs.MAX_V_REC_TYPE_COUNT]; + // 预留位 + public byte[] reserved = new byte[256]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"channel", "starttime", "endtime", + "emVStreamType", "nEventCount", "emEventTypes", "reserved"}); + } + + public static class ByReference extends STU_RECORD_BY_TIME implements Structure.ByReference + { + } + + public static class ByValue extends STU_RECORD_BY_TIME implements Structure.ByValue + { + } + } + + // 回放进度信息 + public static class STU_PLAY_BACK_POS_INFO extends Structure + { + // 回放总时长,单位s + public int nTotalPlaybackTime; + // 当前回放秒数,单位s,-1表示结束 + public int nCurPlaybackTime; + // 保留字节 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nTotalPlaybackTime", "nCurPlaybackTime", "reserved"}); + } + + public static class ByReference extends STU_PLAY_BACK_POS_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_PLAY_BACK_POS_INFO implements Structure.ByValue + { + } + } + + public static class STU_UPGRADE_PROGRESS_INFO extends Structure + { + // 设备端升级的进度 + public int nProgress; + // 设备状态描述 + // 成功:Succeed或Succeedng, 失败:Failed, 取消:Cancel, 升级中:Upgrading + public byte[] szStatus = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nProgress", "szStatus"}); + } + + public static class ByReference extends STU_UPGRADE_PROGRESS_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_UPGRADE_PROGRESS_INFO implements Structure.ByValue + { + } + } + + ////////////////////////////////////////////////////////////////////////////////////////////////// + public static class STU_CB_AUTO_REGISTER_INFO extends Structure + { + public int dwSize; + public byte[] szDevSerial = new byte[64]; // 序列号 + public byte[] szToken = new byte[NetDefs.MAX_PATH]; // 令牌 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "szDevSerial", "szToken"}); + } + + public static class ByReference extends STU_CB_AUTO_REGISTER_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_CB_AUTO_REGISTER_INFO implements Structure.ByValue + { + } + } + + // 公网代理注册相关结构体 + public static class STU_CLOUD_SERVICE_CONNECT_PARAM extends Structure + { + public int dwSize; + public byte[] szDstIp = new byte[64]; // 服务器IP + public int nDstPort; // 服务器端口号 + public int dwConnectType; // 连接类型:0 主连接 + public byte[] szToken = new byte[NetDefs.MAX_PATH]; // 设备通道唯一ID令牌 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "szDstIp", "nDstPort", "dwConnectType", "szToken"}); + } + + public static class ByReference extends STU_CLOUD_SERVICE_CONNECT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CLOUD_SERVICE_CONNECT_PARAM implements Structure.ByValue + { + } + } + + public static class STU_CLOUD_SERVICE_CONNECT_RESULT extends Structure + { + public int dwSize; + public int dwConnectState; // 当前连接状态:1成功,0失败 + public byte[] szMessage = new byte[128]; // 连接状态信息 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "dwConnectState", "szMessage"}); + } + + public static class ByReference extends STU_CLOUD_SERVICE_CONNECT_RESULT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CLOUD_SERVICE_CONNECT_RESULT implements Structure.ByValue + { + } + } + + // 设备信息 + public static class STU_DEVICE_INFO extends Structure + { + public byte[] szSerialNumber = new byte[64]; // 序列号 + public byte[] reserved = new byte[532]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szSerialNumber", "reserved"}); + } + + public static class ByReference extends STU_DEVICE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_DEVICE_INFO implements Structure.ByValue + { + } + } + + // 修改设备配置返回信息 + public static class STU_DEVICE_SET_RESULT extends Structure + { + public int nType; // 类型 + public int nResultCode; // 返回码;0:成功,1:失败,2:数据不合法,3:暂时无法设置,4:没有权限 + public int nRebootFlag; // 重启标志;0:不需要重启,1:需要重启才生效 + public byte[] reserved = new byte[16]; // 保留 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nType", "nResultCode", "nRebootFlag", "reserved"}); + } + + public static class ByReference extends STU_DEVICE_SET_RESULT implements Structure.ByReference + { + } + + public static class ByValue extends STU_DEVICE_SET_RESULT implements Structure.ByValue + { + } + } + + // 请求监视或回放的错误返回信息 + public static class STU_DEVICE_PLAY_RESULT extends Structure + { + public int dwResultCode; // 错误返回码 + public LLONG lPlayHandle; // 相应句柄值 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwResultCode", "lPlayHandle", "reserved"}); + } + + public static class ByReference extends STU_DEVICE_PLAY_RESULT implements Structure.ByReference + { + } + + public static class ByValue extends STU_DEVICE_PLAY_RESULT implements Structure.ByValue + { + } + } + + // 请求语音对讲的错误返回信息 + public static class STU_DEVICE_TALK_RESULT extends Structure + { + public int dwResultCode; // 错误返回码 + public LLONG lTalkHandle; // 相应句柄值 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwResultCode", "lTalkHandle", "reserved"}); + } + + public static class ByReference extends STU_DEVICE_TALK_RESULT implements Structure.ByReference + { + } + + public static class ByValue extends STU_DEVICE_TALK_RESULT implements Structure.ByValue + { + } + } + + // 串口基本属性 + public static class STU_SERIAL_PORT_ATTRIBUTE extends Structure + { + public int nType; + public byte[] szName = new byte[32]; + public int nDataBit; // 数据位;0:5,1:6,2:7,3:8 + public int nStopBit; // 停止位;0:1位,1:1.5位,2:2位 + public int nParity; // 校验位;0:无校验,1:奇校验;2:偶校验; 3:标志校验; 4:空校验 + public int nBaudRate; // 波特率 + public byte[] reserved = new byte[32]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nType", "szName", "nDataBit", + "nStopBit", "nParity", "nBaudRate", "reserved"}); + } + + public static class ByReference extends STU_SERIAL_PORT_ATTRIBUTE implements Structure.ByReference + { + } + + public static class ByValue extends STU_SERIAL_PORT_ATTRIBUTE implements Structure.ByValue + { + } + } + + // 网络登入参数 + public static class STU_NET_PARAM extends Structure + { + public int nNetworkType; // 网络类型, 0-LAN, 1-WAN + public int nLoginTimeout; // 登入时的等待超时时间(ms),默认 5000 ms + public int nConnectTimeout; // 连接等待超时时间(ms),默认 2000 ms + public int nConnectTryNum; // 连接尝试次数,默认1次 + public int nSubConnectTimespan; // 子连接之间的等待时间(ms),默认 10 ms + public int nGetDevInfoTimeout; // 获取设备信息超时时间(ms),默认 2000 ms + public int nGetSubConnInfoTimeout; // 获取子连接信息超时时间(ms),为 0 默认 1000 ms + public int nSearchRecordTimeout; // 按时间查询录像文件的超时时间(ms),为0默认为 3000 ms + public int nDetectSubDisconnTimespan; // 检测子链接断线等待时间(ms),为0默认为 60 * 1000 ms + public int nConnectBufSize; // 每个连接接收数据缓冲大小(Byte),为 0 默认 1 * 1024 * 1024 + public int nPicBufSize; // 实时图片接收缓冲大小(Byte),为 0 默认为 2 * 1024 * 1024 + public int nPlaybackBufSize; // 回放数据接收缓冲大小(MB),为 0 默认为 2M + public byte[] reserved = new byte[128]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nNetworkType", "nLoginTimeout", "nConnectTimeout", + "nConnectTryNum", "nSubConnectTimespan", "nGetDevInfoTimeout", "nGetSubConnInfoTimeout", + "nSearchRecordTimeout", "nDetectSubDisconnTimespan", "nConnectBufSize", "nPicBufSize", + "nPlaybackBufSize", "reserved"}); + } + + public static class ByReference extends STU_NET_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_NET_PARAM implements Structure.ByValue + { + } + } + + ////////////////////////////////////////////////////////////////////////////////////////////////// + public static class STU_SEARCH_NETCARD extends Structure + { + public int valid; // 是否有效 + public byte[] szName = new byte[32]; // 网卡名称 + public byte[] szMac = new byte[40]; // 网卡物理Mac地址 + public byte[] reserved1 = new byte[64]; // 保留位 + public byte[] IPv4_Address = new byte[16]; // IPv4 地址 + public byte[] IPv4_SubnetMask = new byte[16]; // IPv4 子网掩码 + public byte[] IPv4_DefaultGateway = new byte[16]; // IPv4 默认网关 + public int IPv4_DhcpEnable; // IPv4 DHCP 使能位 + public byte[] IPv6_Address = new byte[64]; // IPv6 地址 + public byte[] IPv6_SubnetMask = new byte[64]; // IPv6 子网掩码 + public byte[] IPv6_DefaultGateway = new byte[64]; // IPv6 默认网关 + public int IPv6_DhcpEnable; // IPv6 DHCP 使能位 + public byte[] reserved2 = new byte[128]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"valid", "szName", "szMac", + "reserved1", "IPv4_Address", "IPv4_SubnetMask", "IPv4_SubnetMask", "IPv4_DefaultGateway", + "IPv4_DhcpEnable", "IPv6_Address", "IPv6_SubnetMask", "IPv6_DefaultGateway", "IPv6_DhcpEnable", + "reserved2"}); + } + + public static class ByReference extends STU_SEARCH_NETCARD implements Structure.ByReference + { + } + + public static class ByValue extends STU_SEARCH_NETCARD implements Structure.ByValue + { + } + } + + public static class STU_DEVICE_SEARCH_INFO extends Structure + { + public int nProtocolType; // 搜索协议类型 + // 0 - 第一代; 1 - 第二代 + public int bActivated; // 是否已激活,1 true,0 false + public byte[] szDeviceClass = new byte[64]; // 设备类别 + public byte[] szDeviceType = new byte[64]; // 设备型号 + public byte[] szSerialNumber = new byte[64]; // 设备序列号 + public byte[] szSoftVersion = new byte[32]; // 软件版本号 + public byte[] szVendorName = new byte[64]; // 厂商名称 + public byte[] szMac = new byte[40]; // 当前网卡 MAC + public int nCurNetCardIndex; // 当前的网卡索引 + public int nDtsPort; // DTS 端口 + public int nHttpPort; // HTTP 端口 + public byte[] szDefaultNetCard = new byte[16]; // 默认网卡 + public STU_SEARCH_NETCARD[] stuNetCardArr = new STU_SEARCH_NETCARD[NetDefs.MAX_NETCARD_NUM]; // 网卡数组 + public byte[] reserved = new byte[256]; // 保留位 + + public STU_DEVICE_SEARCH_INFO() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nProtocolType", "bActivated", "szDeviceClass", + "szDeviceType", "szSerialNumber", "szSoftVersion", "szVendorName", "szMac", + "nCurNetCardIndex", "nDtsPort", "nHttpPort", "szDefaultNetCard", "stuNetCardArr", + "reserved"}); + } + + public static class ByReference extends STU_DEVICE_SEARCH_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_DEVICE_SEARCH_INFO implements Structure.ByValue + { + } + } + + public static class STU_DEVICE_IP_SEARCH_INFO extends Structure + { + public int dwSize; + public int nIpNum; // 当前搜索的IP个数 + public byte[] szIPs = new byte[256 * 64]; // 具体待搜索的IP信息 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "nIpNum", "szIP"}); + } + + public static class ByReference extends STU_DEVICE_IP_SEARCH_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_DEVICE_IP_SEARCH_INFO implements Structure.ByValue + { + } + } + + public static class STU_DEVICE_SEARCH_CONDITION_INFO extends Structure + { + public int dwSize; + // 是否具有 MAC 搜索条件,1 true,2 false + public int bMac; + public byte[] szMac = new byte[40]; + // 是否具有 IPv4 搜索条件,1 true,2 false + public int bIPv4; + public byte[] szStartIPv4 = new byte[16]; + public byte[] szEndIPv4 = new byte[16]; + public byte[] reserved1 = new byte[64]; + // 是否具有 IPv6 搜索条件,1 true,2 false + public int bIPv6; + public byte[] szStartIPv6 = new byte[64]; + public byte[] szEndIPv6 = new byte[64]; + public byte[] reserved2 = new byte[128]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "bMac", "szMac", + "bIPv4", "szStartIPv4", "szEndIPv4", "reserved1", + "bIPv6", "szStartIPv6", "szEndIPv6", "reserved2"}); + } + + public static class ByReference extends STU_DEVICE_SEARCH_CONDITION_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_DEVICE_SEARCH_CONDITION_INFO implements Structure.ByValue + { + } + } + + // 设备激活条件 + public static class STU_DEVICE_ACTIVATE_INFO extends Structure + { + public int dwSize; + public byte[] szMac = new byte[40]; // 设备 MAC 地址 + public byte[] szPassword = new byte[64]; // 激活的设备密码 + public byte[] szEncType = new byte[32]; // 加密类型 + public byte[] szDeviceIpv4 = new byte[16]; // 单播时有效,设备 Ipv4 地址 + // 如果存在多个设备 IP 地址相同,则需要组播激活,该地址需要为空 + public byte[] szContactInfo = new byte[128]; // 联系方式,手机号或email地址 + public byte[] reserved = new byte[112]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "szMac", "szPassword", + "szEncType", "szDeviceIpv4", "szContactInfo", "reserved"}); + } + + public static class ByReference extends STU_DEVICE_ACTIVATE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_DEVICE_ACTIVATE_INFO implements Structure.ByValue + { + } + } + + // UDP单播/组播获取公钥输入参数 + public static class STU_RSA_PUBLICKEY_IN_PARAM extends Structure + { + // 结构体大小 + public int dwSize; + // mac 地址十六进制字符串 + public byte[] szMac = new byte[40]; + // Ipv4 地址,单播时有效,如果存在多个设备 IP 地址相同,则需要组播获取,该地址需要为空 + public byte[] szDeviceIpv4 = new byte[16]; + // 保留参数 + public byte[] reserved = new byte[112]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "szMac", "szDeviceIpv4", "reserved"}); + } + + public static class ByReference extends STU_RSA_PUBLICKEY_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_RSA_PUBLICKEY_IN_PARAM implements Structure.ByValue + { + } + } + + // UDP单播/组播获取公钥输出参数 + public static class STU_RSA_PUBLICKEY_OUT_PARAM extends Structure + { + // 结构体大小 + public int dwSize; + // mac 地址十六进制字符串 + public byte[] szMac = new byte[40]; + // RSA modules 十六进制字符串 + public byte[] szModules = new byte[1024]; + // RSA exponent 十六进制字符串 + public byte[] szExponent = new byte[64]; + // 保留参数 + public byte[] reserved = new byte[256]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "szMac", "szModules", "szExponent", "reserved"}); + } + + public static class ByReference extends STU_RSA_PUBLICKEY_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_RSA_PUBLICKEY_OUT_PARAM implements Structure.ByValue + { + } + } + + // 设备网络修改参数 + public static class STU_DEVICE_NETCFG_MODIFY_INFO extends Structure + { + // 一般只修改指定网卡的网络参数 + public byte[] szEthname = new byte[64]; // 网卡名称 + public byte[] szMac = new byte[40]; // 网卡物理Mac地址 + public byte[] szUser = new byte[64]; // 用户名 + public byte[] szPassword = new byte[64]; // 用户密码 + public byte[] reserved1 = new byte[64]; // 保留位1 + public short nDtsPort; // 服务端口 + public short nHttpPort; // HTTP 端口 + public short nHttpsPort; // HTTPS 端口 + public short nRtspPort; // RTSP 端口 + public byte[] reserved2 = new byte[64]; // 保留位2 + public byte[] IPv4_Address = new byte[16]; // IPv4 地址 + public byte[] IPv4_SubnetMask = new byte[16]; // IPv4 子网掩码 + public byte[] IPv4_DefaultGateway = new byte[16]; // IPv4 默认网关 + public int IPv4_DhcpEnable; // IPv4 DHCP 使能位 + public byte[] IPv6_Address = new byte[64]; // IPv6 地址 + public byte[] IPv6_SubnetMask = new byte[64]; // IPv6 子网掩码 + public byte[] IPv6_DefaultGateway = new byte[64]; // IPv6 默认网关 + public int IPv6_DhcpEnable; // IPv6 DHCP 使能位 + public byte[] szDeviceIpv4 = new byte[16]; // 单播时有效,单播的设备 Ipv4 地址; + // 如果多个设备 IP 存在重复,则需要组播修改,该地址为空; + public byte[] reserved3 = new byte[112]; // 保留位3 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szEthname", "szMac", "szUser", "szPassword", "reserved1", + "nDtsPort", "nHttpPort", "nHttpsPort", "nRtspPort", "reserved2", "IPv4_Address", "IPv4_SubnetMask", + "IPv4_DefaultGateway", "IPv4_DhcpEnable", "IPv6_Address", "IPv6_SubnetMask", "IPv6_DefaultGateway", + "IPv6_DhcpEnable", "szDeviceIpv4", "reserved3"}); + } + + public static class ByReference extends STU_DEVICE_NETCFG_MODIFY_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_DEVICE_NETCFG_MODIFY_INFO implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////// + // 主动注册参数配置 + public static class STU_SERVER_INFO extends Structure + { + public byte[] szServerIp = new byte[64]; // 注册服务器IP + public int nServerPort; // 端口号 + public byte[] reserved = new byte[3]; // 对齐 + public byte bServerIpExEn; // 注册服务器IP扩展使能,0-表示无效, 1-表示有效 + public byte[] szServerIpEx = new byte[60]; // 注册服务器IP扩展,支持ipv4,ipv6,域名等类型的IP + public byte[] reserved2 = new byte[512]; // 预留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szServerIp", "nServerPort", "reserved", + "bServerIpExEn", "szServerIpEx", "reserved2"}); + } + + public static class ByReference extends STU_SERVER_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_SERVER_INFO implements Structure.ByValue + { + } + } + + // 主动注册服务器信息 + public static class STU_REGISTER_SERVER_INFO extends Structure + { + public int dwSize; + public byte bServerNum; // 支持的最大ip数 + public STU_SERVER_INFO[] lstServer = new STU_SERVER_INFO[12]; // 服务器信息 + public byte bEnable; // 使能 + public byte[] szDeviceID = new byte[64]; // 设备 ID + public byte[] reserved = new byte[256]; // 保留位 + + public STU_REGISTER_SERVER_INFO() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "bServerNum", "lstServer", + "bEnable", "szDeviceID", "reserved"}); + } + + public static class ByReference extends STU_REGISTER_SERVER_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_REGISTER_SERVER_INFO implements Structure.ByValue + { + } + } + + // 文件信息 + public static class STU_FILE_INFO extends Structure + { + // 文件名 + public byte[] szFileName = new byte[256]; + // 保留参数 + public byte[] reserved = new byte[896]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szFileName", "reserved"}); + } + + public static class ByReference extends STU_FILE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_FILE_INFO implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + //报警信息结构体 + public static class STU_ALARM_EVENT_INFO extends Structure + { + public int nAlarmType; // 报警类型 + public int nChannelID; // 设备通道号 + public byte[] cAlarmTime = new byte[32]; // 报警发生时间 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"eAlarmType", "iChannelID", "cAlarmTime"}); + } + + public static class ByReference extends STU_ALARM_EVENT_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_INFO implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 回调数据(异步接口) + public static class STU_CALLBACK_DATA extends Structure + { + public int nResultCode; // 返回码;0:成功 + public Pointer pBuf; // 接收数据, 缓冲是由用户开辟的,从接口形参传入 + public int nRetLen; // 接收长度 + public LLONG lOperateHandle; // 操作句柄 + public Pointer userdata; // 操作对应用户参数 + public byte[] reserved = new byte[16]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uMaxMajorStreamBitrate", + "uMinMajorStreamBitrate", "uMaxExtraStreams", "uSupportedStandarsMask"}); + } + + public static class ByReference extends STU_CALLBACK_DATA implements Structure.ByReference + { + } + + public static class ByValue extends STU_CALLBACK_DATA implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 视频编码能力 + public static class STU_CAPS_ENCODE extends Structure + { + public int uMaxMajorStreamBitrate; // 设备支持的最大主码流码率,单位 kbps + public int uMinMajorStreamBitrate; // 设备支持的最小主码流码率,单位 kbps + public int uMaxExtraStreams; // 最大辅码流路数 + public int uSupportedStandarsMask; // 支持的视频制式掩码 + // 从低位到高位,1 表示支持 PAL, NTSC, SECAM + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uMaxMajorStreamBitrate", + "uMinMajorStreamBitrate", "uMaxExtraStreams", "uSupportedStandarsMask"}); + } + + public static class ByReference extends STU_CAPS_ENCODE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_ENCODE implements Structure.ByValue + { + } + } + + // 录像能力集 + public static class STU_CAPS_RECORD extends Structure + { + public int uPreMaxTime; // 最大预录时间 + public STU_RANGE_I stuPackTimeRange; // 录像打包时间长度范围,单位 s + public STU_RANGE_I stuPackSizeRange; // 按文件长度打包的范围,单位 kb + public int uSupportPackTypeMask; // 支持的录像打包方式掩码,从低位到高位,1表示支持 按时间长度打包,按文件大小打包 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uPreMaxTime", + "stuPackTimeRange", "stuPackSizeRange", "uSupportPackTypeMask"}); + } + + public static class ByReference extends STU_CAPS_RECORD implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_RECORD implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////// + public static class STU_CAPS_VIDEOIN_GLOBAL extends Structure + { + public byte[] szPlatform = new byte[16]; // 平台类型 + public byte byCoverCount; // 支持最多的区域覆盖个数 + public byte byCoverType; // 是否支持区域覆盖。0-不支持,1-支持实时的区域覆盖,2-支持非实时的区域覆盖 + public byte byTitleCount; // 支持最多的标题叠加的个数 + public byte byFormatCount; // 前端支持输出分辨率数目 + public int bDownScaling; // 是否支持画面缩小,非 binning 模式 + public int bUpScaling; // 是否支持画面放大 + public int bGain; // 是否支持增益控制 + public int bGainAuto; // 是否支持自动增益 + public int bSetColor; // 是否支持视频颜色设置 + public int bAutoSyncPhase; // 是否支持自动相位调节 + public int bBrightnessCompensation; // 是否支持亮度补偿调节 + public int bElectricFocus; // 是否支持电动调节 + public int bIrisAdjust; // 是否支持光圈调节 + public int bIrisAutoAdjust; // 是否支持光圈自动调节 + public int bExternalSyncInput; // 是否支持HD信号外同步 + public int bReferenceLevel; // 是否支持参考电平设置 + public int bFlashAdjust; // 是否支持闪光灯设置 + public int bGamma; // 是否支持 Gamma + public float fMaxPicOccupy; // 最大图片占空比 + public int nMaxWidth; // 视频输入传感器最大水平感光分辨率宽度 + public int nMaxHeight; // 视频输入传感器最大垂直感光分辨率高度 + public int nLadenBitrate; // 视频输入支持的最高视频负载码流 kbps, 非 banning 模式 + public int nHorizontalBinning; // 水平像素叠加功能掩码 + public int nVerticalBinning; // 垂直像素叠加功能掩码 + public int nEEModeRange; // 锐度可调节的最大等级 + public int nMaxGammaLevel; // 支持最大 Gamma 基表加权调节值 + public int nuSignalFormatsMask; // 输入源格式掩码,从低位到高位,逐位为 1 时依次表示 + // "Inside"-内部输入 "BT656"-BT656标准 "720p"-720逐行高清标准 "1080p"-1080隔行高清标准 + // "1080i"-1080逐行高清标准 "1080sF"-1080sF高清标准 "1_3M"-1080*960格式 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szPlatform", "byCoverCount", "byCoverType", + "byTitleCount", "byFormatCount", "bDownScaling", "bUpScaling", "bGain", + "bGainAuto", "bSetColor", "bAutoSyncPhase", "bBrightnessCompensation", + "bElectricFocus", "bIrisAdjust", "bIrisAutoAdjust", "bExternalSyncInput", + "bReferenceLevel", "bFlashAdjust", "bGamma", "fMaxPicOccupy", + "nMaxWidth", "nMaxHeight", "nLadenBitrate", "nHorizontalBinning", + "nVerticalBinning", "nEEModeRange", "nMaxGammaLevel", "nuSignalFormatsMask"}); + } + + public static class ByReference extends STU_CAPS_VIDEOIN_GLOBAL implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_VIDEOIN_GLOBAL implements Structure.ByValue + { + } + } + + public static class STU_IRIS_TYPE extends Structure + { + public byte[] szType = new byte[16]; // 光圈类型 + public int uMax; // 光圈最大值 + public int uMin; // 光圈最小值 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szType", "uMax", "uMin"}); + } + + public static class ByReference extends STU_IRIS_TYPE implements Structure.ByReference + { + } + + public static class ByValue extends STU_IRIS_TYPE implements Structure.ByValue + { + } + } + + public static class STU_CAPS_VIDEOIN_IRIS extends Structure + { + public int bSupport; // 是否支持精确光圈配置 + public int uRealIrisTypeNum; // 实际光圈类型个数 + // 光圈类别数组 + public STU_IRIS_TYPE[] stuIrisTypeArr = new STU_IRIS_TYPE[NetDefs.MAX_IRIS_TYPE_NUM]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bSupport", "uRealIrisTypeNum", "stuIrisTypeArr"}); + } + + public static class ByReference extends STU_CAPS_VIDEOIN_IRIS implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_VIDEOIN_IRIS implements Structure.ByValue + { + } + } + + public static class STU_CAPS_VIDEOIN_HALOCUT extends Structure + { + public int uMaxCutHaloRegion; // 支持的最大减光晕区域个数 + public int uMinCutHaloLevel; // 最小减光晕等级 + public int uMaxCutHaloLevel; // 最大减光晕等级 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uMaxCutHaloRegion", "uMinCutHaloLevel", "uMaxCutHaloLevel"}); + } + + public static class ByReference extends STU_CAPS_VIDEOIN_HALOCUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_VIDEOIN_HALOCUT implements Structure.ByValue + { + } + } + + public static class STU_CAPS_VIDEOIN_METERING extends Structure + { + public int uSupportModeMask; // 支持的模式掩码 + // 从低位到高位,位为 1 依次表示支持 "Average"-全局测光, "Partial"-局部测光, + // "Backlight"-背光补偿,"LightInhibition"-强光抑制,"FaceExposure"-人脸曝光 + public int uPartialRegionNum; // 支持的局部测光区域的个数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uSupportModeMask", "uPartialRegionNum"}); + } + + public static class ByReference extends STU_CAPS_VIDEOIN_METERING implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_VIDEOIN_METERING implements Structure.ByValue + { + } + } + + public static class STU_CAPS_VIDEOIN_IMAGE_CTRL extends Structure + { + public int bMirror; // 是否支持画面镜像功能 + public int bFlip; // 是否支持画面 180 翻转 + public int bRotate90; // 是否支持画面90/270度旋转 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bMirror", "bFlip", "bRotate90"}); + } + + public static class ByReference extends STU_CAPS_VIDEOIN_IMAGE_CTRL implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_VIDEOIN_IMAGE_CTRL implements Structure.ByValue + { + } + } + + public static class STU_CAPS_VIDEOIN_EXPOSURE extends Structure + { + public int uDoubleExposureMask; // 支持快门方式的掩码 + // bit0-支持双快门全帧率,bit1-支持双快门半帧率,bit2-支持三快门半帧率 + public int uExposure; // 曝光等级。0-不支持曝光控制 + public int uExposureMode; // 支持的自动曝光模式 + // 0-默认自动 1-低噪声 2-防拖影 4-手动区间 + // 5-光圈优先 6-手动固定 7-增益优先 8-快门优先 9-闪光灯匹配模式 + public int uWideDynamicRangeMask; // 是否支持宽动态 + // 0-不支持,bit0-支持数字宽动态,bit1-支持真实宽动态,bit2-支持自动数字宽动态,bit3-支持自动宽动态(真实宽动态自适应) + public float fMinExposureTime; // 支持的最小曝光时间,单位:ms + public float fMaxExposureTime; // 支持的最大曝光时间,单位:ms + public float fMinExposureTime1; // 抓拍支持的最小曝光时间,单位:ms + public float fMaxExposureTime1; // 抓拍支持的最大曝光时间,单位:ms + public int bGain; // 是否支持增益控制 + public int bGainAuto; // 是否支持自动增益 + public int bSnapshotExposure; // 是否支持抓图单独曝光 + public int bLimitedAutoExposure; // 是否支持带时间上下限的自动曝光 + public int bCustomManualExposure; // 是否支持用户自动以手动曝光时间 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uDoubleExposureMask", "uExposure", "uExposureMode", + "uWideDynamicRangeMask", "fMinExposureTime", "fMaxExposureTime", + "fMinExposureTime1", "fMaxExposureTime1", "bGain", "bGainAuto", + "bSnapshotExposure", "bLimitedAutoExposure", "bCustomManualExposure"}); + } + + public static class ByReference extends STU_CAPS_VIDEOIN_EXPOSURE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_VIDEOIN_EXPOSURE implements Structure.ByValue + { + } + } + + public static class STU_CAPS_VIDEOIN_DAY_NIGHT extends Structure + { + public int bDayNightColor; // 是否支持日夜颜色自动转换 + public int bMultiOptions; // 是否支持多套选项 + public int bNightOptions; // 是否支持夜晚特殊选项 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bDayNightColor", "bMultiOptions", "bNightOptions"}); + } + + public static class ByReference extends STU_CAPS_VIDEOIN_DAY_NIGHT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_VIDEOIN_DAY_NIGHT implements Structure.ByValue + { + } + } + + public static class STU_CAPS_VIDEOIN_WHITE_BALANCE extends Structure + { + public int uWhiteBalance; // 支持自动白平衡标志位 0-不支持,1-支持自动白平衡,2-支持自动和预置白平衡,3-支持自动、预置、自定义白平衡 + public int uMaxPartWhiteBalanceCount; // 最大支持局部白平衡区域的数量 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uWhiteBalance", "uMaxPartWhiteBalanceCount"}); + } + + public static class ByReference extends STU_CAPS_VIDEOIN_WHITE_BALANCE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_VIDEOIN_WHITE_BALANCE implements Structure.ByValue + { + } + } + + public static class STU_CAPS_VIDEOIN_IR extends Structure + { + public int bSupportIRPlateMode; // 是否支持红外车牌模式 + public int bInfraRed; // 是否支持红外补偿 + public int bSmartIRExposure; // 是否支持智能红外曝光 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bSupportIRPlateMode", "bInfraRed", "bSmartIRExposure"}); + } + + public static class ByReference extends STU_CAPS_VIDEOIN_IR implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_VIDEOIN_IR implements Structure.ByValue + { + } + } + + public static class STU_CAPS_VIDEOIN_DENOISE extends Structure + { + public int uSourceMask; // 支持3D降噪源掩码 bit0-视频, bit1-图片 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uSourceMask"}); + } + + public static class ByReference extends STU_CAPS_VIDEOIN_DENOISE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_VIDEOIN_DENOISE implements Structure.ByValue + { + } + } + + public static class STU_CAPS_VIDEOIN_DEFOG extends Structure + { + public int uMaxManualValue; // 手动模式下最大强度值 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uMaxManualValue"}); + } + + public static class ByReference extends STU_CAPS_VIDEOIN_DEFOG implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_VIDEOIN_DEFOG implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////// + public static class STU_CAPS_VIDEO_ENCODE extends Structure + { + public int uEncodeTypes; // 视频压缩格式。bit0-"MJPG", bit1-"H.264", bit2-"H.265" + public int uMaxROICount; // 最大 ROI 个数 + public int bROIDynamicTrack; // 是否支持动态跟踪 ROI 区域 + public int uMaxCoverCount; // 支持最多的区域覆盖个数 + public int uMaxTitleCount; // 支持最多的标题叠加的个数 + public int bSnapByOtherSize; // 是否有独立的主图分辨率,否则使用主码流分辨率 + public int uMaxSnapFps; // 抓图最大帧率 + public int uMaxSVCTLevel; // 最大 SVC-T 支持层数,0-不支持SVC + public int uSvcEncodeTypes; // 支持SVC编码的视频格式。bit0-"MJPG", bit1-"H.264", bit2-"H.265" + public int uMaxBlankHeight; // 支持的最大黑边高度 + public int uSmart264; // 支持的 Smart 编码策略,当仅对 H264/H265 有效 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uEncodeTypes", "uMaxROICount", "bROIDynamicTrack", + "uMaxCoverCount", "uMaxCoverCount", "uMaxTitleCount", "bSnapByOtherSize", + "uMaxSnapFps", "uMaxSVCTLevel", "uMaxSVCTLevel", "uSvcEncodeTypes", + "uMaxBlankHeight", "uSmart264"}); + } + + public static class ByReference extends STU_CAPS_VIDEO_ENCODE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_VIDEO_ENCODE implements Structure.ByValue + { + } + } + + public static class STU_CAPS_PICTURE_OSD extends Structure + { + public int bSupport; // 是否支持 + public byte[] szElements = new byte[512]; // 支持的元素列表,元素以 '|' 分隔 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bSupport", "szElements"}); + } + + public static class ByReference extends STU_CAPS_PICTURE_OSD implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_PICTURE_OSD implements Structure.ByValue + { + } + } + + public static class STU_CAPS_OSD extends Structure + { + public int uPicOSDCount; // Picture OSD 数组实际长度 + // Picture OSD 数组 + public STU_CAPS_PICTURE_OSD[] stuPicOSDCapsArr = new STU_CAPS_PICTURE_OSD[NetDefs.MAX_CAPS_PICTURE_OSD_NUM]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uPicOSDCount", "stuPicOSDCapsArr"}); + } + + public static class ByReference extends STU_CAPS_OSD implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_OSD implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////// + public static class STU_CAPS_AUDIO_IN extends Structure + { + public int nLineInChannels; // 线性输入通道数 + public int nLineInSupportSetVolume; // 线性输入是否支持设置音量,0-不支持 1-支持 + public int nMicChannels; // Mic 输入通道数 + public int nMicSupportSetVolume; // Mic 是否支持设置音量,0-不支持,1-支持 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nLineInChannels", "nLineInSupportSetVolume", + "nMicChannels", "nMicSupportSetVolume"}); + } + + public static class ByReference extends STU_CAPS_AUDIO_IN implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_AUDIO_IN implements Structure.ByValue + { + } + } + + public static class STU_CAPS_AUDIO_OUT extends Structure + { + public int nMixing; // 是否支持混音。0-不支持 1-支持 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nMixing"}); + } + + public static class ByReference extends STU_CAPS_AUDIO_OUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_AUDIO_OUT implements Structure.ByValue + { + } + } + + public static class STU_CAPS_VIDEO_DETECT extends Structure + { + public int bMovingDetect; // 是否支持动检 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bMovingDetect"}); + } + + public static class ByReference extends STU_CAPS_VIDEO_DETECT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_VIDEO_DETECT implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////// + public static class STU_CAPS_INTER_PROTOCOL_ITEM extends Structure + { + public byte[] szProtocol = new byte[64]; // 协议名称 + public byte[] szCfgTable = new byte[64]; // 配置表名称 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szProtocol", "szCfgTable"}); + } + + public static class ByReference extends STU_CAPS_INTER_PROTOCOL_ITEM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_INTER_PROTOCOL_ITEM implements Structure.ByValue + { + } + } + + public static class STU_CAPS_INTER_PROTOCOL extends Structure + { + public int nItemCount; // Item 数组大小 + public STU_CAPS_INTER_PROTOCOL_ITEM[] stuItemArray = new STU_CAPS_INTER_PROTOCOL_ITEM[16]; // Item 数组 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nItemCount", "stuItemArray"}); + } + + public static class ByReference extends STU_CAPS_INTER_PROTOCOL implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_INTER_PROTOCOL implements Structure.ByValue + { + } + } + + public static class STU_CAPS_VIDEO_ANALYSE extends Structure + { + public int nSupportedSceneCount; // 支持的业务大类个数 + // 支持的业务大类列表 + public byte[] szSupportedScenes = new byte[NetDefs.MAX_VIDEO_ANALYSE_SCENE_NUM * 64]; + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nSupportedSceneCount", "szSupportedScenes", "reserved"}); + } + + public static class ByReference extends STU_CAPS_VIDEO_ANALYSE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_VIDEO_ANALYSE implements Structure.ByValue + { + } + } + + // 人脸识别能力 + public static class STU_CAPS_FACE_RECOGNIZE extends Structure + { + public byte byMaxGroup; // 最大人脸底库数 + public byte byMaxFaceOnePerson; // 单人人脸底库图上限 + public byte bySupportImageMask; // 支持的图片格式掩码 低位到高位为 1 时依次表示支持图片格式 JPG、JPEG、PNG + public byte byUploadFaceImage; // 设备是否上传底图,否的话只上传特征值信息; 0-不上传;1-上传 + public int uMaxFaceSize; // 人脸底库图上限字节数 + public int uMinFaceSize; // 人脸底库图下限字节数 + public int uMaxFaceCount; // 底图总张数上限 + public short wMaxResolutionWidth; // 底图最大分辨率宽度 + public short wMaxResolutionHeight; // 底图最大分辨率高度 + public short wMinResolutionWidth; // 底图最小分辨率宽度 + public short wMinResolutionHeight; // 底图最小分辨率高度 + public int bPersonManagerIndividual; // 是否人员信息分开管理, TRUE-分开管理;FALSE-一起管理 + public int bSupportBWGList; // 是否支持黑白灰名单 + public float fWhiteListSearchThreshold; // 白名单推荐识别阈值 + public float fGrayListSearchThreshold; // 灰名单推荐识别阈值 + public float fBlackListSearchThreshold; // 黑名单推荐识别阈值 + public int uCustomDescriptionFunc; // 人员信息自定义描述, 0 - 未明确,1 - 梯控 + public byte[] reserved = new byte[44]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"byMaxGroup", "byMaxFaceOnePerson", "bySupportImageMask", + "byUploadFaceImage", "uMaxFaceSize", "uMinFaceSize", "uMaxFaceCount", "wMaxResolutionWidth", + "wMaxResolutionHeight", "wMinResolutionWidth", "wMinResolutionHeight", + "bPersonManagerIndividual", "bSupportBWGList", "fWhiteListSearchThreshold", "fGrayListSearchThreshold", + "fBlackListSearchThreshold", "uCustomDescriptionFunc", "reserved"}); + } + + public static class ByReference extends STU_CAPS_FACE_RECOGNIZE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_FACE_RECOGNIZE implements Structure.ByValue + { + } + } + + // 二维码识别能力 + public static class STU_CAPS_QRCODE_ANALYZE extends Structure + { + public int bSupported; // 是否支持二维码识别 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bSupported", "reserved"}); + } + + public static class ByReference extends STU_CAPS_QRCODE_ANALYZE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_QRCODE_ANALYZE implements Structure.ByValue + { + } + } + + // 设备数据加减密能力 + public static class STU_CAPS_DATA_ENC_DEC extends Structure + { + public int bSupportEncSingleCall; // 设备是否支持 sdk 端数据加密发送 + public byte[] reserved = new byte[128]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bSupportEncSingleCall", "reserved"}); + } + + public static class ByReference extends STU_CAPS_DATA_ENC_DEC implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_DATA_ENC_DEC implements Structure.ByValue + { + } + } + + // 交通黑白名单表信息(不带记录编号) + public static class STU_TRAFFIC_BW_TABLE extends Structure + { + public int emType; // 黑白名单类型 + public byte[] szOwner = new byte[64]; // 车主 + public byte[] szPlateNumber = new byte[32]; // 车牌号码 + public byte[] szPlateColor = new byte[32]; // 车牌颜色 + public byte[] szVehicleColor = new byte[32]; // 车身颜色 + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emType", "szOwner", "szPlateNumber", + "szPlateColor", "szVehicleColor", "reserved"}); + } + + public static class ByReference extends STU_TRAFFIC_BW_TABLE implements Structure.ByReference + { + } + + public static class ByValue extends STU_TRAFFIC_BW_TABLE implements Structure.ByValue + { + } + } + + // 交通黑白名单表信息(带记录编号) + public static class STU_TRAFFIC_BW_TABLE_EX extends Structure + { + public int nRecNo; // 记录编号(只读) + public int emType; // 黑白名单类型,EM_TRAFFIC_BWLIST_TYPE + public byte[] szOwner = new byte[64]; // 车主 + public byte[] szPlateNumber = new byte[32]; // 车牌号码 + public byte[] szPlateColor = new byte[32]; // 车牌颜色 + public byte[] szVehicleColor = new byte[32]; // 车身颜色 + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nRecNo", "emType", "szOwner", + "szPlateNumber", "szPlateColor", "szVehicleColor", "reserved"}); + } + + public static class ByReference extends STU_TRAFFIC_BW_TABLE_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_TRAFFIC_BW_TABLE_EX implements Structure.ByValue + { + } + } + + // 交通黑白名单查找条件 + public static class STU_TRAFFIC_BW_TABLE_FIND_CONDITION extends Structure + { + public int emType; // 黑白名单类型,EM_TRAFFIC_BWLIST_TYPE + public byte[] szOwne = new byte[64]; // 车主,为空时表示不以该条件查找 + public byte[] szPlateNumber = new byte[32]; // 车牌,为空时表示不以该条件查找 + public byte[] reserved = new byte[128]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emType", "szOwne", "szPlateNumber", "reserved"}); + } + + public static class ByReference extends STU_TRAFFIC_BW_TABLE_FIND_CONDITION implements Structure.ByReference + { + } + + public static class ByValue extends STU_TRAFFIC_BW_TABLE_FIND_CONDITION implements Structure.ByValue + { + } + } + + // 一次查询黑白名单输入参数 + public static class STU_TRAFFIC_BW_TABLE_FIND_RESULT_IN_PARAM extends Structure + { + public int nFindInstance; // 查询实例 + public int nOffset; // 查询偏移 + public int nCount; // 一次查询数目(不超过 MAX_TRAFFIC_BWLIST_RECODE_NUM) + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nFindInstance", "nOffset", "nCount"}); + } + + public static class ByReference extends STU_TRAFFIC_BW_TABLE_FIND_RESULT_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_TRAFFIC_BW_TABLE_FIND_RESULT_IN_PARAM implements Structure.ByValue + { + } + } + + // 一次查询黑白名单输出参数 + public static class STU_TRAFFIC_BW_TABLE_FIND_RESULT_OUT_PARAM extends Structure + { + public int nResultCount; // 查询到的结果个数 + // 黑白名单列表 + public STU_TRAFFIC_BW_TABLE_EX[] stTables = new STU_TRAFFIC_BW_TABLE_EX[NetDefs.MAX_TRAFFIC_BWLIST_RECODE_NUM]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nResultCount", "stTables"}); + } + + public static class ByReference extends STU_TRAFFIC_BW_TABLE_FIND_RESULT_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_TRAFFIC_BW_TABLE_FIND_RESULT_OUT_PARAM implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 获取4G信号强度输入参数 + public static class STU_GET_4G_RSSI_IN_PARAM extends Structure + { + public byte[] szModuleName = new byte[64]; // 4G模块名,为空时默认“ppp0” + public byte[] reserved = new byte[128]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szModuleName", "reserved"}); + } + + public static class ByReference extends STU_GET_4G_RSSI_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_GET_4G_RSSI_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取4G信号强度输出参数 + public static class STU_GET_4G_RSSI_OUT_PARAM extends Structure + { + public byte[] szWorkMode = new byte[64]; // 工作模式名 + public int nRssiLevel; // RSSI信号强度, 0 - 100 + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szWorkMode", "nRssiLevel", "reserved"}); + } + + public static class ByReference extends STU_GET_4G_RSSI_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_GET_4G_RSSI_OUT_PARAM implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // IPv4 地址配置 + public static class STU_CFG_IPV4_INFO extends Structure + { + // 是否有效,无效时不用配置(获取后不能设置) + public int bValid; + // DHCP 使能 + public int bDhcpEnable; + // IPv4 地址 + public byte[] szIpAddress = new byte[16]; + // 子网掩码 + public byte[] szSubnetMask = new byte[16]; + // 默认网关 + public byte[] szDefaultGateway = new byte[16]; + // 首选 DNS 服务地址 + public byte[] szMainDnsServer = new byte[16]; + // 备用 DNS 服务地址 + public byte[] szExtraDnsServer = new byte[16]; + // 保留位 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bValid", "bDhcpEnable", "szIpAddress", + "szSubnetMask", "szDefaultGateway", "szMainDnsServer", "szExtraDnsServer", "reserved"}); + } + + public static class ByReference extends STU_CFG_IPV4_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_IPV4_INFO implements Structure.ByValue + { + } + } + + public static class STU_CFG_IPV6_INFO extends Structure + { + // 是否有效,无效时不用配置(获取后不能设置) + public int bValid; + // DHCP 使能(不支持设置) + public int bDhcpEnable; + // 系统自动分配的IPv6本地链路地址, 该地址只能直联,不需要Gateway(获取后不能设置) + public byte[] szIpLinkLocalAddress = new byte[64]; + // 网络前缀 + public byte[] szPrefix = new byte[16]; + // IPv6 地址 + public byte[] szIpAddress = new byte[64]; + // 子网掩码 + public byte[] szSubnetMask = new byte[64]; + // 默认网关 + public byte[] szDefaultGateway = new byte[64]; + // 首选 DNS 服务地址 + public byte[] szMainDnsServer = new byte[64]; + // 备用 DNS 服务地址 + public byte[] szExtraDnsServer = new byte[64]; + // 保留位 + public byte[] reserved = new byte[128]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bValid", "bDhcpEnable", "szIpLinkLocalAddress", + "szPrefix", "szIpAddress", "szSubnetMask", "szDefaultGateway", "szMainDnsServer", + "szExtraDnsServer", "reserved"}); + } + + public static class ByReference extends STU_CFG_IPV6_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_IPV6_INFO implements Structure.ByValue + { + } + } + + // 单张网卡配置 + public static class STU_CFG_ONE_NETCARD extends Structure + { + public int bValid; // 网卡是否有效,无效说明不存在(获取后不能设置) + public int nMTU; // MTU(获取后不能设置) + public byte[] szNetCardName = new byte[32]; // 网卡名 "eth0","wlan0","ppp0"(获取后不能设置) + public byte[] szMacAddress = new byte[40]; // MAC 地址(获取后不能设置) + public STU_CFG_IPV4_INFO stuCfgIpv4; // IPv4 配置信息 + public STU_CFG_IPV6_INFO stuCfgIpv6; // IPv6 配置信息 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bValid", "nMTU", "szNetCardName", + "szMacAddress", "stuCfgIpv4", "stuCfgIpv6", "reserved"}); + } + + public static class ByReference extends STU_CFG_ONE_NETCARD implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ONE_NETCARD implements Structure.ByValue + { + } + } + + public static class STU_CFG_ALL_NETCARD extends Structure + { + // 真实的网卡数量 + public int uNetCardNum; + // 默认网卡名称 + public byte[] szDefaultNetCard = new byte[32]; + // 网卡配置信息 + public STU_CFG_ONE_NETCARD[] stuNetCardsInfo = new STU_CFG_ONE_NETCARD[NetDefs.MAX_NETCARD_NUM]; + // 保留位 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uNetCardNum", "szDefaultNetCard", "stuNetCardsInfo"}); + } + + public static class ByReference extends STU_CFG_ALL_NETCARD implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ALL_NETCARD implements Structure.ByValue + { + } + } + + // 夏令时时间 + public static class STU_DST_TIME extends Structure + { + public int iMouth; + public int iWeek; + public int iDay; + public int iHour; + public byte[] reserved = new byte[16]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"iMouth", "iWeek", "iDay", "iHour", "reserved"}); + } + + public static class ByReference extends STU_DST_TIME implements Structure.ByReference + { + } + + public static class ByValue extends STU_DST_TIME implements Structure.ByValue + { + } + } + + // 夏令时配置 + public static class STU_CFG_DST extends Structure + { + public int dwSize; // 结构体大小 + public int bEnable; // 使能 + public int iTimeZone; // 正数标示东,负数标示西,[-12 - 13] + public STU_DST_TIME stuDstStartTime; + public STU_DST_TIME stuDstEndTime; + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "bEnable", "iTimeZone", + "stuDstStartTime", "stuDstEndTime", "reserved"}); + } + + public static class ByReference extends STU_CFG_DST implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_DST implements Structure.ByValue + { + } + } + + // NTP配置 + public static class STU_CFG_NTP extends Structure + { + public int dwSize; // 结构体大小 + public int bEnable; + public byte[] szDomainName = new byte[256]; + public int uInterval; + public int uPort; + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "bEnable", "szDomainName", + "uInterval", "uPort", "reserved"}); + } + + public static class ByReference extends STU_CFG_NTP implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_NTP implements Structure.ByValue + { + } + } + + public static class STU_CFG_RECORD_PLAN extends Structure + { + // 录像模式 0-自动,1-手动,2-关闭 + public byte bControlMode; + public byte[] reserved1 = new byte[3]; // 保留位 + + // 布防时间 - begin + public STU_WEEK_TIME_SECTION_SCHEDULE stuWeekTimeSection; + // 假日信息 + public int bHolidayEnable; + public STU_TIME_SECTION_SCHEDULE[] stHolidaySchedule = new STU_TIME_SECTION_SCHEDULE[NetDefs.TIME_SECTION]; + // 布防时间 - end + + public byte[] reserved2 = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bControlMode", "reserved1", "stuWeekTimeSection", + "bHolidayEnable", "stHolidaySchedule", "reserved2"}); + } + + public static class ByReference extends STU_CFG_RECORD_PLAN implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_RECORD_PLAN implements Structure.ByValue + { + } + } + + public static class STU_CFG_RECORD_OPTIONS extends Structure + { + public int uPackSize; // 录像打包长度 + public int uPackTime; // 录像打包时间 + public int uPreRecordTime; // 预录时间 + public byte bPackType; // 录像打包类型 0是按时间录像 + public byte bStreamType; // 码流类型,0是主码流,1是副码流1,2是副码流2 + public byte[] reserved = new byte[34]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uPackSize", "uPackTime", "uPreRecordTime", + "bPackType", "bStreamType", "reserved"}); + } + + public static class ByReference extends STU_CFG_RECORD_OPTIONS implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_RECORD_OPTIONS implements Structure.ByValue + { + } + } + + //存储-录像配置 + public static class STU_CFG_RECORD extends Structure + { + public int dwSize; // 结构体大小 + public STU_CFG_RECORD_PLAN stuRecordPlan; // 录像计划参数 + public STU_CFG_RECORD_OPTIONS stuRecordOptions; // 录像选项 + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "stuRecordPlan", "stuRecordOptions", "reserved"}); + } + + public static class ByReference extends STU_CFG_RECORD implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_RECORD implements Structure.ByValue + { + } + } + + // 串口属性 + public static class STU_CFG_COM_ATTRIBUTE extends Structure + { + public int uBaudRate; // 波特率,取值为1200, 2400 ,4800, 9600, 19200, 38400, 57600, 115200 + public int nDataBits; // 数据位,取值为5, 6, 7, 8 + public int emParity; // 校验模式,EM_COM_PARITY_TYPE + public int emStopBit; // 停止位,EM_COM_STOP_BIT_TYPE + public byte[] reserved = new byte[4]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uBaudRate", "nDataBits", "emParity", + "emStopBit", "reserved"}); + } + + public static class ByReference extends STU_CFG_COM_ATTRIBUTE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_COM_ATTRIBUTE implements Structure.ByValue + { + } + } + + // 串口配置项 + public static class STU_CFG_COM_ITEM extends Structure + { + public int bEnable; // 串口使能 + public int emComType; // 串口类型 + public STU_CFG_COM_ATTRIBUTE stuAttribute; // 串口属性 + public int emTransComProtoMask; // 如果串口是透明串口,则表示当前的支持协议项,EM_TRANS_COM_PROTOCOL_MASK + public byte[] reserved = new byte[32]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "emComType", "stuAttribute", + "emTransComProtoMask", "reserved"}); + } + + public static class ByReference extends STU_CFG_COM_ITEM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_COM_ITEM implements Structure.ByValue + { + } + } + + // 串口能力集 + public static class STU_CFG_COM extends Structure + { + // 串口数目 + public int uNums; + // 串口配置 + public STU_CFG_COM_ITEM[] stuComItems = new STU_CFG_COM_ITEM[NetDefs.MAX_DEVICE_COM_NUM]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uNums", "stuComItems"}); + } + + public static class ByReference extends STU_CFG_COM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_COM implements Structure.ByValue + { + } + } + + // 串口参数 + public static class STU_CAPS_COM_PARAM extends Structure + { + public int bSupportConsole; // 是否支持调试串口 + public int bSupportNormal; // 是否支持普通串口 + public int bSupportTrans; // 是否支持透明串口 + public byte[] reserved1 = new byte[8]; // 保留参数1 + + // 基于透明串口模式的特殊协议支持, 掩码类型参考 EM_TRANS_COM_PROTOCOL_MASK + public int nTranscomProtocolMask; + public byte[] reserved2 = new byte[16]; // 保留参数 + + public int emBusType; // Bus 总线类型,EM_COM_BUS_TYPE + public int emComType; // 通信方式,EM_COM_COMM_TYPE + public byte[] reserved3 = new byte[32]; // 保留参数2 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bSupportConsole", "bSupportNormal", "bSupportTrans", + "reserved1", "nTranscomProtocolMask", "reserved2", "emBusType", + "emComType", "reserved3"}); + } + + public static class ByReference extends STU_CAPS_COM_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_COM_PARAM implements Structure.ByValue + { + } + } + + // 串口能力集 + public static class STU_CAPS_COM extends Structure + { + // 设备所支持的串口数目 + public int uComCount; + // 串口能力集参数 + public STU_CAPS_COM_PARAM[] stuItems = new STU_CAPS_COM_PARAM[NetDefs.MAX_DEVICE_COM_NUM]; + + public STU_CAPS_COM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"uComCount", "stuItems"}); + } + + public static class ByReference extends STU_CAPS_COM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_COM implements Structure.ByValue + { + } + } + + // 外设能力集 + public static class STU_CAPS_DEV_PERIPHERAL extends Structure + { + public int uAlarmInSlots; // 报警输入的通道总数 + public int uAlarmOutSlots; // 报警输出的通道总数 + public int bICR; // 是否支持ICR(IRCut)控制 + public int uPhotoSensitiveCount; // 光敏传感器个数 + public int uWieGandSlots; // 韦根口个数,0表示不支持 + public int nRealIOItemCount; // 设备实际支持的UIIO功能数量 + public int[] emIOItems = new int[NetDefs.MAX_DEV_PREI_IO_CFG_NUM]; // 设备支持的IO功能,"Alarm"报警必有,EM_DEV_PREI_IO_MODE + public int uScreenNum; // 屏幕个数 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uAlarmInSlots", "uAlarmOutSlots", "bICR", + "uPhotoSensitiveCount", "uWieGandSlots", "nRealIOItemCount", "emIOItems", + "uScreenNum", "reserved"}); + } + + public static class ByReference extends STU_CAPS_DEV_PERIPHERAL implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAPS_DEV_PERIPHERAL implements Structure.ByValue + { + } + } + + // 自动重启配置 + public static class STU_CFG_AUTO_MAINTAIN extends Structure + { + public int dwSize; // 结构体大小 + public int bEnable; + public int uWeekDay; // 周几重启,[0-6],0代表周日,6代表周六 + public int uHour; // 几点重启,[0-23] + public byte[] reserved = new byte[64]; // 保留参数2 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "bEnable", "uWeekDay", "uHour", "reserved"}); + } + + public static class ByReference extends STU_CFG_AUTO_MAINTAIN implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_AUTO_MAINTAIN implements Structure.ByValue + { + } + } + + // 事件联动 + public static class STU_EVENT_HANDLER extends Structure + { + public int bRecordEnable; // 录像使能 + public int nRecordLatch; // 预录时间 [10s-300s],单位:秒 + public int nRecordChannelNum; // 实际录像通道个数 + // 录像通道数组 + public int[] nRecordChannels = new int[NetDefs.MAX_RECORD_CHANNEL_NUM]; + public int bAlarmOutEnable; // 报警输出使能 + public int nAlarmOutLatch; // 报警输入停止后,输出延时时间 [1s,300s],单位:秒 + public int nAlarmOutChannelNum; // 实际报警输出通道个数 + // 报警输出通道数组 + public int[] nAlarmOutChannels = new int[NetDefs.MAX_ALARM_OUT_CHANNEL_NUM]; + public int bCaptureEnable; // 抓图使能 + public int nCapturePreRecordTime; // 图片关联录像的预录时间,不能大于通用的预录时间,单位:秒 + public int nCaptureChannelNum; // 实际抓图通道数 + // 抓图通道数组 + public int[] nCaptureChannels = new int[NetDefs.MAX_CAPTURE_CHANNEL_NUM]; + // 时段信息 + public STU_WEEK_TIME_SECTION_SCHEDULE stuWeekTimeSection; + // 假日信息 + public int bHolidayEnable; + public STU_TIME_SECTION_SCHEDULE[] stHolidaySchedule = new STU_TIME_SECTION_SCHEDULE[NetDefs.TIME_SECTION]; + // 韦根掩码 0表示不使能,大于0则按位使能通道 + public int nWieGandMask; + // 报输入停止后,输出延时时间(秒),有此字段表示韦根复用为IO,范围[1,60] + public int nWieGandOutLatch; + + public int bAudioOutEnable; // 音频输出是否使能 + public byte[] szAudioOutName = new byte[64]; // 输出音频文件名称 + + public int nLinkageStatus; // 联动们状态,0 - 关门,1 - 开门,2 - 禁用 + public int bLogEnable; // 存储到报警日志使能 + public int bUpAlarmEnable; // 报警上传使能 + + public byte[] reserved = new byte[940]; // 保留参数 + + public STU_EVENT_HANDLER() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"bRecordEnable", "nRecordLatch", "nRecordChannelNum", + "nRecordChannels", "bAlarmOutEnable", "nAlarmOutLatch", "nAlarmOutChannelNum", + "nAlarmOutChannels", "bCaptureEnable", "nCapturePreRecordTime", "nCaptureChannelNum", + "nCaptureChannels", "stuWeekTimeSection", "bHolidayEnable", "stHolidaySchedule", + "nWieGandMask", "nWieGandOutLatch", "bAudioOutEnable", "szAudioOutName", "nLinkageStatus", + "bLogEnable", "bUpAlarmEnable", "reserved"}); + } + + public static class ByReference extends STU_EVENT_HANDLER implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_HANDLER implements Structure.ByValue + { + } + } + + // 单个人脸识别联动配置 + public static class STU_CFG_FACE_GROUP_RECOGNIZE_RULE extends Structure + { + // 人脸组 ID + public int nGroupID; + // 识别通过的联动事件 + public STU_EVENT_HANDLER stEventHandler; + // 识别不通过的联动事件 + public STU_EVENT_HANDLER stEventHandlerNoPass; + + // 布防时间 begin + // 时段信息 + public STU_WEEK_TIME_SECTION_SCHEDULE stuWeekTimeSection; // 一周的时间段 + + // 假日信息 + public int bHolidayEnable; + public STU_TIME_SECTION_SCHEDULE[] stHolidaySchedule = new STU_TIME_SECTION_SCHEDULE[NetDefs.TIME_SECTION]; + // 布防时间 end + + // 识别对比阈值, 范围0~100 + public int nSearchThreshold; // 门禁产品专用 + + // 人证比对阈值, 范围0~100 + public double dCardFaceThreshold; + + // 戴口罩时识别比对阈值, 范围0~100 + public double dMouthoccThreshold; + + // 保留参数 + public byte[] reserved = new byte[492]; + + public STU_CFG_FACE_GROUP_RECOGNIZE_RULE() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nGroupID", "stEventHandler", "stEventHandlerNoPass", "stuWeekTimeSection", + "bHolidayEnable", "stHolidaySchedule", "nSearchThreshold", "dCardFaceThreshold", "dMouthoccThreshold", "reserved"}); + } + + public static class ByReference extends STU_CFG_FACE_GROUP_RECOGNIZE_RULE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_FACE_GROUP_RECOGNIZE_RULE implements Structure.ByValue + { + } + } + + // 所有人脸识别联动配置 + public static class STU_CFG_FACE_GROUP_RECOGNIZE_RULES extends Structure + { + // 人脸识别规则实际数目 + public int nRuleCount; + // 人脸识别联动配置信息 + public STU_CFG_FACE_GROUP_RECOGNIZE_RULE[] stRuleArray = new STU_CFG_FACE_GROUP_RECOGNIZE_RULE[NetDefs.MAX_FACE_GROUP_NUM]; + + public STU_CFG_FACE_GROUP_RECOGNIZE_RULES() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nRuleCount", "stRuleArray"}); + } + + public static class ByReference extends STU_CFG_FACE_GROUP_RECOGNIZE_RULES implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_FACE_GROUP_RECOGNIZE_RULES implements Structure.ByValue + { + } + } + + // 识别不通过快速推出策略人脸库配置 + public static class STU_NO_PASS_QUICK_PUSH_STRATEGY_CFG extends Structure + { + // 人脸库组ID + public int nGroupID; + // 是否使能 + public int bEnable; + // 识别比对快速判定不通过低阈值, 范围0~100, 需小于SearchThreshold + public float fLowSearchThreshold; + // 保留字节 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nGroupID", "bEnable", "fLowSearchThreshold", "reserved"}); + } + + public static class ByReference extends STU_NO_PASS_QUICK_PUSH_STRATEGY_CFG implements Structure.ByReference + { + } + + public static class ByValue extends STU_NO_PASS_QUICK_PUSH_STRATEGY_CFG implements Structure.ByValue + { + } + } + + // 识别不通过快速推出策略配置 + public static class STU_CFG_RECOG_NO_PASS_QUICK_PUSH_STRATEGY extends Structure + { + // 人脸库实际数量 + public int nGroupCount; + // 人脸库配置数组 + public STU_NO_PASS_QUICK_PUSH_STRATEGY_CFG[] stStrategyCfgs = new STU_NO_PASS_QUICK_PUSH_STRATEGY_CFG[NetDefs.MAX_FACE_GROUP_NUM]; + + public STU_CFG_RECOG_NO_PASS_QUICK_PUSH_STRATEGY() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nGroupCount", "stStrategyCfgs"}); + } + + public static class ByReference extends STU_CFG_RECOG_NO_PASS_QUICK_PUSH_STRATEGY implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_RECOG_NO_PASS_QUICK_PUSH_STRATEGY implements Structure.ByValue + { + } + } + + // 单个人脸识别联动配置 + public static class STU_CFG_FACE_GROUP_RECOGNIZE_CONFIG extends Structure + { + // 抓拍间隔, 单位秒 + public int nRecogniseCircleInterval; + // 抓拍距离最低限 + public int nRecogniseDistanceRangeLow; + // 抓拍距离最高限 + public int nRecogniseDistanceRangeHigh; + // 同一个人员最小重复识别间隔, 单位秒 + // 即间隔内应用针对同一人只上报一次识别结果,规避算法误检测导致id一直变化,不断上报识别结果 + public int nRepetitionRecInterval; + // 安全帽检测模式:0关闭(默认)1提示模式 2严格模式 + public int nRecogniseSafetyHelmetMode; + // 保留位 + public byte[] reserved = new byte[504]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nRecogniseCircleInterval", "nRecogniseDistanceRangeLow", "nRecogniseDistanceRangeHigh", + "nRepetitionRecInterval", "nRecogniseSafetyHelmetMode", "reserved"}); + } + + public static class ByReference extends STU_CFG_FACE_GROUP_RECOGNIZE_CONFIG implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_FACE_GROUP_RECOGNIZE_CONFIG implements Structure.ByValue + { + } + } + + // 人脸识别配置集合 + public static class STU_CFG_FACE_GROUP_RECOGNIZE_CONFIGS extends Structure + { + // 人脸识别配置实际数目 + public int nCfgCount; + // 人脸识别配置信息数组 + public STU_CFG_FACE_GROUP_RECOGNIZE_CONFIG[] stCfgArray = new STU_CFG_FACE_GROUP_RECOGNIZE_CONFIG[NetDefs.MAX_FACE_GROUP_NUM]; + + public STU_CFG_FACE_GROUP_RECOGNIZE_CONFIGS() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nRecogniseCircleInterval", "nRecogniseDistanceRangeLow", + "nRecogniseDistanceRangeHigh", "reserved"}); + } + + public static class ByReference extends STU_CFG_FACE_GROUP_RECOGNIZE_CONFIGS implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_FACE_GROUP_RECOGNIZE_CONFIGS implements Structure.ByValue + { + } + } + + // 人脸注册策略配置 + public static class STU_CFG_FACE_REGISTER_STRATEGY extends Structure + { + public int bPauseFaceDetect; // 是否停止算法检测, TRUE - 提升入库效率, FALSE - 识别并行, 入库效率下降 + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bPauseFaceDetect", "reserved"}); + } + + public static class ByReference extends STU_CFG_FACE_REGISTER_STRATEGY implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_FACE_REGISTER_STRATEGY implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 抓拍模式配置 + public static class STU_CFG_CAPTURE_MODE extends Structure + { + public int nMatchMode; // 抓拍匹配模式 + // 0-非实时匹配方式,先报警后抓拍,抓拍帧不是报警帧 + // 1-实时匹配模式,报警帧和抓拍帧是同一帧 + public byte[] szMode = new byte[32]; // 抓拍模式,"Auto":自动模式 | "Best":最优模式 | "Fast":快速模式 | "Custom":自定义模式 | "Monitor":监控模式 + public int nRecognizeMode; // 识别模式,-1 - 未知; 0 - 人脸识别门禁模式; 1 - 人脸识别自动模式 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nMatchMode", "szMode", "nRecognizeMode", "reserved"}); + } + + public static class ByReference extends STU_CFG_CAPTURE_MODE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_CAPTURE_MODE implements Structure.ByValue + { + } + } + + // 抓拍张数配置 + public static class STU_CFG_SNAP_TIMES extends Structure + { + public int nRuleFaceDetectCapNum; // 人脸检测抓拍张数,-1 表示不设置 + public int nRuleTrafficPassCapNum; // 交通卡口抓拍张数,-1 表示不设置 + public byte[] reserved = new byte[128]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nRuleFaceDetectCapNum", "nRuleTrafficPassCapNum", "reserved"}); + } + + public static class ByReference extends STU_CFG_SNAP_TIMES implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_SNAP_TIMES implements Structure.ByValue + { + } + } + + // 体温监控配置 + public static class STU_CFG_TEMPERATURE_MONITOR extends Structure + { + public int bEnable; // 是否使能 + public float fThreshold; // 高温阈值, 需落在测温范围内 + public STU_RECT_I stuRect; // 报警区域,报警区域温度异常才报警 + public int iCofirmTime; // 正常体温确认时间:1000,2000,3000,4000,5000,6000 + public int iUploadMode; // 正常体温事件上报模式:0-确认即上报, 1-确认即上报+二次确认 + public float fMeasureLowerLimit; // 测温下限 + public float fMeasureUpperLimit; // 测温上限 + public byte[] reserved = new byte[240]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "fThreshold", "stuRect", + "iCofirmTime", "iUploadMode", "fMeasureLowerLimit", "fMeasureUpperLimit", "reserved"}); + } + + public static class ByReference extends STU_CFG_TEMPERATURE_MONITOR implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_TEMPERATURE_MONITOR implements Structure.ByValue + { + } + } + + // 记录保存控制配置 + public static class STU_CFG_ACCESS_RECORD_CONFIG extends Structure + { + public int bRecordInvalidTemp; // 在测温异常情况下是否记录日志,默认为true + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bRecordInvalidTemp", "reserved"}); + } + + public static class ByReference extends STU_CFG_ACCESS_RECORD_CONFIG implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ACCESS_RECORD_CONFIG implements Structure.ByValue + { + } + }; + + // WEB 端口配置 + public static class STU_CFG_NET_WEB extends Structure + { + public int uHttpEnable; // 使能开关,0 - 禁用;1 - 开启 + public int uHttpPort; // http 端口 + public int uHttpsEnable; // 使能开关,0 - 禁用;1 - 开启 + public int uHttpsPort; // https 端口 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uHttpEnable", "uHttpPort", "uHttpsEnable", "uHttpsPort", "reserved"}); + } + + public static class ByReference extends STU_CFG_NET_WEB implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_NET_WEB implements Structure.ByValue + { + } + } + + // RTP 配置 + public static class STU_CFG_NET_RTP extends Structure + { + public int uStartPort; // 起始端口 + public int uEndPort; // 结束端口 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uStartPort", "uEndPort", "reserved"}); + } + + public static class ByReference extends STU_CFG_NET_RTP implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_NET_RTP implements Structure.ByValue + { + } + } + + // RTSP 配置 + public static class STU_CFG_NET_RTSP extends Structure + { + public int nEnable; // 使能开关,0 - 禁用;1 - 开启 + public int nRtspPort; // rtsp 端口 + public int nMaxConnectNum; // 最大连接数 + public STU_CFG_NET_RTP stuRtp; // rtp 配置信息 + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uEnable", "uRtspPort", "uMaxConnectNum", "stuRtp", "reserved"}); + } + + public static class ByReference extends STU_CFG_NET_RTSP implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_NET_RTSP implements Structure.ByValue + { + } + } + + // NetService 配置 + public static class STU_CFG_NET_SERVICE extends Structure + { + public int uTcpPort; // 数据传输服务 TCP 端口 + public int uUdpPort; // 数据传输服务 UDP 端口 + public int uMaxConnectNum; // 最大连接数 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uTcpPort", "uUdpPort", "uMaxConnectNum", "reserved"}); + } + + public static class ByReference extends STU_CFG_NET_SERVICE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_NET_SERVICE implements Structure.ByValue + { + } + } + + // 端口配置(端口设置后设备会重启) + public static class STU_CFG_NET_PORT extends Structure + { + public int uHttpPort; + public int uHttpsPort; + public int uRtspPort; + public int uServerPort; + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uHttpPort", "uHttpsPort", "uRtspPort", "uServerPort", "reserved"}); + } + + public static class ByReference extends STU_CFG_NET_PORT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_NET_PORT implements Structure.ByValue + { + } + } + + // wifi使能配置 + public static class STU_CFG_WIFI_CONFIG extends Structure + { + public int bEnable; // wifi使能 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "reserved"}); + } + + public static class ByReference extends STU_CFG_WIFI_CONFIG implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_WIFI_CONFIG implements Structure.ByValue + { + } + } + + // wifi 配置信息 + public static class STU_CFG_WIFI_INFO extends Structure + { + public byte[] cSsidName = new byte[64]; // ssid名称 + public byte[] cSsidPasswd = new byte[64]; // ssid密码 + public int uAuthMode; // 认证模式 + public int uencType; // 加密类型 + public int irssiQuality; // 信号强度,单位是dBM + public int uConnectedStatus; // 链接状态, 0是未连接; 1是链接 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"cSsidName", "cSsidPasswd", "uAuthMode", + "uencType", "irssiQuality", "uConnectedStatus", "reserved"}); + } + + public static class ByReference extends STU_CFG_WIFI_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_WIFI_INFO implements Structure.ByValue + { + } + } + + // wifi操作配置 + public static class STU_CFG_WIFI_OPER_CONFIG extends Structure + { + public int uOperType; // 0:扫描; 1是链接指定wifi; 2是断开指定wifi + public int uNums; // 指定wifi数目 + public Pointer stuInfos; // wifi信息,内存由用户进行内存申请和释放 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uOperType", "uNums", "stuInfos"}); + } + + public static class ByReference extends STU_CFG_WIFI_OPER_CONFIG implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_WIFI_OPER_CONFIG implements Structure.ByValue + { + } + } + + // 视频通道水印参数配置 + public static class STU_CFG_WATER_MARK extends Structure + { + public int bEnable; // 是否添加水印 + public byte[] szData = new byte[256]; // 水印信息 + public byte[] szKey = new byte[128]; // 水印密钥 + public byte[] reserved = new byte[256]; // 保留信息 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szData", "szKey", "reserved"}); + } + + public static class ByReference extends STU_CFG_WATER_MARK implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_WATER_MARK implements Structure.ByValue + { + } + } + + // 日夜模式配置参数 + public static class STU_CAMERA_DAY_NIGHT_PARAM extends Structure + { + public byte byMode; // 色彩切换模式;0-总是彩色,1-根据亮度或时间自动切换,2-总是黑白 + public byte byDayNightSensitivity; // 日夜模式切换灵敏度,范围1-3 + public byte byDayNightSwitchDelay; // 日夜模式切换延迟时间 单位秒,范围2-10 + public byte[] reserved = new byte[5]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"byMode", "byDayNightSensitivity", "byDayNightSwitchDelay", "reserved"}); + } + + public static class ByReference extends STU_CAMERA_DAY_NIGHT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAMERA_DAY_NIGHT_PARAM implements Structure.ByValue + { + } + } + + // 视频颜色配置 + public static class STU_CAMERA_COLOR extends Structure + { + public byte byBrightness; // 亮度 + public byte byContrast; // 对比度 + public byte bySaturation; // 饱和度 + public byte byHue; // 色调 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"byBrightness", "byContrast", "bySaturation", "byHue"}); + } + + public static class ByReference extends STU_CAMERA_COLOR implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAMERA_COLOR implements Structure.ByValue + { + } + } + + // 图像3D降噪相关参数 + public static class STU_CAMERA_3D_DENOISE extends Structure + { + public byte byTridimDenoise; // 是否开启3D降噪,0-关闭,1-开启,2-只开启视频,3-只开启图片 + public byte[] reserved = new byte[3]; + public byte[] byTridimIntensity = new byte[2]; // 三维降噪时域降噪强度,下标表示视频、图片,范围0~100 + public byte[] byTridimIntensitySpatial = new byte[2]; // 三维降噪空域降噪强度,下标表示视频、图片,范围0~100 + public byte[] reserved2 = new byte[32]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"byBrightness", "byContrast", "bySaturation", "byHue", "reserved2"}); + } + + public static class ByReference extends STU_CAMERA_3D_DENOISE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAMERA_3D_DENOISE implements Structure.ByValue + { + } + } + + // 曝光和增益参数 + public static class STU_CAMERA_EXPOSURE extends Structure + { + public byte bGainAuto; // 自动增益 + public byte byGainMin; // 自动增益下限 范围0~100,小于GainMax + public byte byGainMax; // 自动增益上限 范围0~100 + public byte byGain; // 固定增益调节 0~100 + public byte[] reserved = new byte[32]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bGainAuto", "byGainMin", "byGainMax", "byGain", "reserved"}); + } + + public static class ByReference extends STU_CAMERA_EXPOSURE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAMERA_EXPOSURE implements Structure.ByValue + { + } + } + + // 光圈调节参数 + public static class STU_CAMERA_IRIS extends Structure + { + public byte bIrisAuto; // 自动光圈使能 + public byte byIrisType; // 光圈类型 0-正序光圈P90,1-反序光圈P90,2-DC光圈,3-固定光圈 + public byte[] reserved1 = new byte[2]; // 保留位 + public int dwIris; // 精确的手动光圈大小 + public byte[] reserved2 = new byte[32]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bIrisAuto", "byIrisType", "reserved1", "dwIris", "reserved2"}); + } + + public static class ByReference extends STU_CAMERA_IRIS implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAMERA_IRIS implements Structure.ByValue + { + } + } + + // 白平衡模式调节参数 + public static class STU_CAMERA_WHITE_BALANCE extends Structure + { + public int emWhiteBalance; // 白平衡模式,EM_WHITE_BALANCE + public byte byColorTemperatureLevel; // 色温等级调节,白平衡为"WHITEBALANCE_CT_CUSTOM"模式下有效 0~255 + public byte byGainRed; // 红色增益调节,白平衡为"Custom"模式下有效 0~100 + public byte byGainBlue; // 蓝色增益调节,白平衡为"Custom"模式下有效 0~100 + public byte byGainGreen; // 绿色增益调节,白平衡为"Custom"模式下有效 0~100 + public byte byPartWhiteBalanceWeight; // 权重参数,用来调整局部白平衡和全局白平衡的权重比例 范围0-100 + public byte[] reserved = new byte[19]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emWhiteBalance", "byColorTemperatureLevel", "byGainRed", + "byGainBlue", "byGainGreen", "byPartWhiteBalanceWeight", "reserved"}); + } + + public static class ByReference extends STU_CAMERA_WHITE_BALANCE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAMERA_WHITE_BALANCE implements Structure.ByValue + { + } + } + + // 去雾模式参数 + public static class STU_CAMERA_DEFOG extends Structure + { + public byte byMode; // 透雾模式 0-关闭,1-自动,2-手动 + public byte[] reserved1 = new byte[3]; // 保留位 + public int nValue; // 手动模式强度 + public byte[] reserved2 = new byte[18]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"byMode", "reserved1", "wValue", "reserved2"}); + } + + public static class ByReference extends STU_CAMERA_DEFOG implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAMERA_DEFOG implements Structure.ByValue + { + } + } + + // 测光模式 + public static class STU_CAMERA_METERING extends Structure + { + public byte byMode; // 测光类型 0-全局测光,1-局部测光,2-背光补偿,3-强光抑制 + public byte byIntensity; // 测光强度 0-关闭,1-弱,2-中,3-强 + public byte[] reserved = new byte[18]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"byMode", "byIntensity", "reserved"}); + } + + public static class ByReference extends STU_CAMERA_METERING implements Structure.ByReference + { + } + + public static class ByValue extends STU_CAMERA_METERING implements Structure.ByValue + { + } + } + + // 摄像头参数配置 + public static class STU_CFG_CAMERA extends Structure + { + public int dwSize; // 结构体大小 + public STU_CAMERA_DAY_NIGHT_PARAM stuDayNightParam; // 日夜模式参数[VideoInDayNightParam] + public STU_CAMERA_COLOR[] stuColor = new STU_CAMERA_COLOR[3]; // 颜色配置[VideoInColor] 下标:0-白天,1-晚上,2-其它 + public STU_CAMERA_IRIS[] stuIris = new STU_CAMERA_IRIS[3]; // 光圈配置[VideoInIrisEx] 下标:0-白天,1-晚上,2-其它 + public STU_CAMERA_3D_DENOISE stu3DDenoise; // 图像3D降噪相关参数 VideoInPre3DDenoise + public STU_CAMERA_EXPOSURE[] stueExposure = new STU_CAMERA_EXPOSURE[3]; // 增益调节[VideoInExposure] 下标:视频、图片流、抓拍帧 + public STU_CAMERA_WHITE_BALANCE[] stuWhiteBalance = new STU_CAMERA_WHITE_BALANCE[3]; // 白平衡参数[VideoInWhiteBalance] 下标:视频、图片流、抓拍帧 + public STU_CAMERA_DEFOG[] stuDefog = new STU_CAMERA_DEFOG[3]; // 去雾配置[VideoInDefog] 下标:0-白天,1-黑夜,2-其它 + public STU_CAMERA_METERING stuMetering; // 测光配置[VideoInMetering] + public byte[] reserved = new byte[256]; // 保留位 + + public STU_CFG_CAMERA() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "stuDayNightParam", "stuColor", + "stuIris", "stu3DDenoise", "stueExposure", "stuWhiteBalance", "stuDefog", "stuMetering", "reserved"}); + } + + public static class ByReference extends STU_CFG_CAMERA implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_CAMERA implements Structure.ByValue + { + } + } + + // 视频时间 OSD 参数配置 + public static class STU_CFG_VIDEO_OSD_TIME extends Structure + { + public int bEnable; // 使能 + public int bShowWeek; // 是否显示星期 + public STU_RECT_I stuRect; // 显示位置【0-8192】坐标系 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "bShowWeek", "stuRect", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEO_OSD_TIME implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEO_OSD_TIME implements Structure.ByValue + { + } + } + + // 视频通道 OSD 参数配置 + public static class STU_CFG_VIDEO_OSD_CHANNEL extends Structure + { + public int bEnable; // 使能 + public STU_RECT_I stuRect; // 显示位置【0-8192】坐标系 + public byte[] szText = new byte[256]; // 标题内容 + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "stuRect", "szText", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEO_OSD_CHANNEL implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEO_OSD_CHANNEL implements Structure.ByValue + { + } + } + + // 视频自定义 OSD 参数配置 + public static class STU_CFG_VIDEO_OSD_CUSTOM extends Structure + { + public int bEnable; // 使能 + public STU_RECT_I stuRect; // 显示位置【0-8192】坐标系 + public byte[] szText = new byte[256]; // 标题内容 + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "stuRect", "szText", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEO_OSD_CUSTOM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEO_OSD_CUSTOM implements Structure.ByValue + { + } + } + + // 视频 OSD 参数配置 + public static class STU_CFG_VIDEO_OSD extends Structure + { + public byte byFontSize; // 字体大小 24/32/48... + public byte byFontType; // 字体类型 0-宋体 1-楷体 2-雅黑 + public byte[] reserved1 = new byte[6]; // 保留参数 + public STU_CFG_VIDEO_OSD_CHANNEL stuChannelOsd; // 通道OSD + public STU_CFG_VIDEO_OSD_TIME stuTimeOsd; // 时间OSD + public int nRealCustomOsdCount; // 实际自定义OSD个数 + // 自定义OSD + public STU_CFG_VIDEO_OSD_CUSTOM[] stuCustomOsdArray = new STU_CFG_VIDEO_OSD_CUSTOM[NetDefs.MAX_VIDEO_OSD_CUSTOM_NUM]; + public byte[] reserved2 = new byte[512]; // 保留位 + + public STU_CFG_VIDEO_OSD() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"byFontSize", "byFontType", "reserved1", + "stuChannelOsd", "stuTimeOsd", "nRealCustomOsdCount", "stuCustomOsdArray", "reserved2"}); + } + + public static class ByReference extends STU_CFG_VIDEO_OSD implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEO_OSD implements Structure.ByValue + { + } + } + + //存储点 + public static class STU_CFG_STORAGE_POINT extends Structure + { + public int bSupportFtp; + public int bSupportLocal; + public int bSupportUsb; + public byte[] reserved = new byte[32]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bSupportFtp", "bSupportLocal", "bSupportUsb", "reserved"}); + } + + public static class ByReference extends STU_CFG_STORAGE_POINT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_STORAGE_POINT implements Structure.ByValue + { + } + } + + //存储策略 + public static class STU_CFG_STORAGE_POLICY extends Structure + { + public int bOverWrite; // 存储空间是否满覆盖 + public int bEmergenceStorage; // 是否紧急存储,true 启动紧急存储;false 使用本地存储 + public byte[] reserved = new byte[32]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bOverWrite", "bEmergenceStorage", "reserved"}); + } + + public static class ByReference extends STU_CFG_STORAGE_POLICY implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_STORAGE_POLICY implements Structure.ByValue + { + } + } + + // 存储配置 + public static class STU_CFG_STORAGE extends Structure + { + public int dwSize; // 结构体大小 + public STU_CFG_STORAGE_POINT[] stuStorPoint = new STU_CFG_STORAGE_POINT[2]; // [0]是录像,1是抓图 + public STU_CFG_STORAGE_POLICY stuStoragePolicy; + public byte[] reserved = new byte[256]; // 保留位 + + public STU_CFG_STORAGE() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "stuStorPoint", "stuStoragePolicy", "reserved"}); + } + + public static class ByReference extends STU_CFG_STORAGE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_STORAGE implements Structure.ByValue + { + } + } + + // 网络服务 FTP 参数 + public static class STU_CFG_NET_STORAGE_FTP extends Structure + { + public int uFtpPort; // Ftp 服务器端口 + public int bRealtimeEnable; // 实时上传图片使能 + public byte[] szUserName = new byte[64]; // Ftp 用户名 + public byte[] szPassword = new byte[64]; // Ftp 用户密码 + public byte[] szPathRule = new byte[160]; // Ftp 上传图片路径规则,目录级匹配符 + // 路径匹配符: + // Y: 年 M: 月 D: 日 h: 时 m: 分 s: 秒 + // c: 通道 n: 设备ID i: 设备IP e: 事件代码 u: 毫秒时间戳 x: 强制附加信息,用户不可配 + // 如规则 "/%c_%e/%Y%M%D%h%m%s.jpg" => /通道_事件代码/年月日时分秒.jpg + public int emPathEncodeType; // 路径编码类型 UTF8 / GB2312 ..., EM_FTP_PATH_ENCODE_TYPE + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uFtpPort", "bRealtimeEnable", "szUserName", + "szPassword", "szPathRule", "emPathEncodeType", "reserved"}); + } + + public static class ByReference extends STU_CFG_NET_STORAGE_FTP implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_NET_STORAGE_FTP implements Structure.ByValue + { + } + } + + // 网络存储配置项 + public static class STU_CFG_NET_STORAGE_TRANS_ITEM extends Structure + { + public byte[] szProtocol = new byte[16]; // 协议名称 Sdk / Ftp / ThirdpartPlatform;当为空时无效 + public byte[] szAddress = new byte[64]; // 服务地址, IP 或 域名 + public int bOfflineEnable; // 断网续传使能 + public STU_CFG_NET_STORAGE_FTP stuFtpParams; // Ftp 设置参数,当Protocol为"Ftp"时有效 + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szProtocol", "szAddress", "bOfflineEnable", "stuFtpParams", "reserved"}); + } + + public static class ByReference extends STU_CFG_NET_STORAGE_TRANS_ITEM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_NET_STORAGE_TRANS_ITEM implements Structure.ByValue + { + } + } + + // 所有网络存储配置项 + public static class STU_CFG_NET_STORAGE_TRANS extends Structure + { + public int uItemCount; + public STU_CFG_NET_STORAGE_TRANS_ITEM[] stuItemArray = new STU_CFG_NET_STORAGE_TRANS_ITEM[NetDefs.MAX_NET_STORAGE_ITEM_NUM]; + + public STU_CFG_NET_STORAGE_TRANS() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"uItemCount", "stuItemArray"}); + } + + public static class ByReference extends STU_CFG_NET_STORAGE_TRANS implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_NET_STORAGE_TRANS implements Structure.ByValue + { + } + } + + // Telenet 配置 + public static class STU_CFG_TELNET extends Structure + { + public int dwSize; // 结构体大小 + public int bEnable; // telnet使能 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"dwSize", "bEnale"}); + } + + public static class ByReference extends STU_CFG_TELNET implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_TELNET implements Structure.ByValue + { + } + } + + // 日志查询条件 + public static class STU_CFG_LOG_CONDITION extends Structure + { + public byte[] cStartTime = new byte[32]; // 日志查询开始时间 + public byte[] cEndTime = new byte[32]; // 日志查询结束时间 + public byte[] cMainType = new byte[32]; // 主日志类型,空则查询所有主类型 + public byte[] cSubType = new byte[32]; // 次日志类型,空则查询所有子类型 + public byte[] reserved = new byte[64]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"cStartTime", "cEndTime", "cMainType", "cSubType", "reserved"}); + } + + public static class ByReference extends STU_CFG_LOG_CONDITION implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_LOG_CONDITION implements Structure.ByValue + { + } + } + + // 系统自检结果 + public static class STU_CFG_LOG_DETAIL_SYS_SELF_CHECK extends Structure + { + public int bValid; // 是否有效 + public int bStorageCheck; // 存储自检结果 + public int bNetworkCheck; // 网络自检结果 + public int bMemCheck; // 内存自检结果 + public int bDataBaseCheck; // 数据库自检结果 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bValid", "bStorageCheck", "bNetworkCheck", + "bMemCheck", "bDataBaseCheck"}); + } + + public static class ByReference extends STU_CFG_LOG_DETAIL_SYS_SELF_CHECK implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_LOG_DETAIL_SYS_SELF_CHECK implements Structure.ByValue + { + } + } + + // 日志详细信息 + public static class STU_CFG_LOG_DETAIL extends Structure + { + public int iChannel; // 通道号 + public byte[] cRemoteIP = new byte[64]; // 远程登录IP + public byte[] cConfigName = new byte[32]; // 配置名称 + public byte[] cNetAdapter = new byte[32]; // 网卡名称 + public byte[] cClientType = new byte[32]; // 客户端类型 + public int nRebootError; // 重启错误码信息 + public STU_CFG_LOG_DETAIL_SYS_SELF_CHECK stSysSelfCheckResult; // 系统自检结果,当次日志类型(cSubType)为"SystemSelfCheck"时有效 + public byte[] reserved = new byte[40]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"iChannel", "cRemoteIP", "cConfigName", + "cNetAdapter", "cClientType", "nRebootError", "stSysSelfCheckResult", "reserved"}); + } + + public static class ByReference extends STU_CFG_LOG_DETAIL implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_LOG_DETAIL implements Structure.ByValue + { + } + } + + // 日志查询结果 + public static class STU_CFG_LOG_INFO extends Structure + { + public byte[] cLogTime = new byte[32]; // 该日志记录时间 + public byte[] cOperUserName = new byte[32]; // 操作用户名 + public byte[] cMainType = new byte[32]; // 主日志类型 + public byte[] cSubType = new byte[32]; // 次日志类型 + public STU_CFG_LOG_DETAIL stuLogDetail; // 日志详细信息 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"cLogTime", "cOperUserName", "cMainType", "cSubType", "stuLogDetail"}); + } + + public static class ByReference extends STU_CFG_LOG_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_LOG_INFO implements Structure.ByValue + { + } + } + + public static class STU_CFG_LOG_RESULT extends Structure + { + public int uTotal; // 查询到的总共的日志条数 + public int uCurAmount; // 当前返回的日志条数 + public STU_CFG_LOG_INFO[] stuResult = new STU_CFG_LOG_INFO[NetDefs.MAX_LOG_AMOUNT]; // 一次最多查询MAX_LOG_AMOUNT条日志信息 // 日志详细信息 + + public STU_CFG_LOG_RESULT() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"cLogTime", "cOperUserName", "cMainType", "cSubType", "stuLogDetail"}); + } + + public static class ByReference extends STU_CFG_LOG_RESULT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_LOG_RESULT implements Structure.ByValue + { + } + } + + // 日志查询,支持多次查询 + public static class STU_CFG_LOG extends Structure + { + public STU_CFG_LOG_CONDITION stuSearchCondition; // 日志查询条件 + public STU_CFG_LOG_RESULT stuLogResult; // 日志查询结果 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stuSearchCondition", "stuLogResult"}); + } + + public static class ByReference extends STU_CFG_LOG implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_LOG implements Structure.ByValue + { + } + } + + // 黑白名单条目信息 + public static class STU_CFG_NET_WB_ITEM extends Structure + { + public byte bIPType; // ip地址类型: 0代表单个 IP 地址, 1代表 IP 范围 + public byte[] reserved = new byte[3]; // 保留位 + public byte[] cBeginIPAddr = new byte[64]; // 起始 IP 地址, 用于bIPType为0和1的情况 + // 起始 IP 为空则条目无效 + public byte[] cEndIPAddr = new byte[64]; // 终止 IP 地址, 仅用于bIPType为1情况 + // 终止 IP 为空,则该条目只是单 IP 地址 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bIPType", "reserved", "cBeginIPAddr", "cEndIPAddr"}); + } + + public static class ByReference extends STU_CFG_NET_WB_ITEM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_NET_WB_ITEM implements Structure.ByValue + { + } + } + + // 黑白名单配置信息 + public static class STU_CFG_NET_WB_INFO extends Structure + { + public byte bType; // 黑白名单类型:0-无;1-黑名单,2-白名单 + public byte[] reserved = new byte[3]; // 保留位 + + public int uIPv4Count; // 实际 IPv4 黑白名单信息个数,不超过 MAX_NET_WBLIST_NUM + // 获取时是实际的黑白名单数目;设置时可以不填写 + // IPv4 黑白名单信息 + public STU_CFG_NET_WB_ITEM[] stuIPv4WBInfoArray = new STU_CFG_NET_WB_ITEM[NetDefs.MAX_NET_WB_ITEM_NUM]; + + public int uIPv6Count; // 实际 IPv6 黑白名单信息个数,不超过 MAX_NET_WBLIST_NUM + // 获取时是实际的黑白名单数目;设置时可以不填写 + // IPv6 黑白名单信息,内存由外部申请和释放 + public STU_CFG_NET_WB_ITEM[] stuIPv6WBInfoArray = new STU_CFG_NET_WB_ITEM[NetDefs.MAX_NET_WB_ITEM_NUM]; + + public STU_CFG_NET_WB_INFO() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"bType", "reserved", "uIPv4Count", + "stuIPv4WBInfoArray", "uIPv6Count", "stuIPv6WBInfoArray"}); + } + + public static class ByReference extends STU_CFG_NET_WB_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_NET_WB_INFO implements Structure.ByValue + { + } + } + + //抠图配置结构体 + public static class STU_CFG_SNAP_CUTOUT extends Structure + { + public int bEnable; // 是否使能 + public int nType; // -1 表示无效,0是人脸抠图; 1是半身抠图; 2是全身抠图; 3是车牌抠图 + public float[] fMagnification = new float[4]; // 依次为向左,向上,向右,向下往外扩大倍率,取值范围为[0,1],只针对人脸抠图有效 + public byte[] reserved = new byte[48]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "nType", "fMagnification", "reserved"}); + } + + public static class ByReference extends STU_CFG_SNAP_CUTOUT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_SNAP_CUTOUT implements Structure.ByValue + { + } + } + + // 叠加配置 + public static class STU_CFG_OVERLAP extends Structure + { + // 是否叠加跟踪信息 + public int bMajorStreamIntelliTrack; + // 是否叠加调试信息 + public int bMajorStreamDebug; + // 保留字节 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bMajorStreamIntelliTrack", "bMajorStreamDebug", "reserved"}); + } + + public static class ByReference extends STU_CFG_OVERLAP implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_OVERLAP implements Structure.ByValue + { + } + } + + // 抓图配置 + public static class STU_CFG_GRAP_PIC extends Structure + { + // 是否叠加跟踪信息 + public int bPictureUpload; + // 保留字节 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bPictureUpload", "reserved"}); + } + + public static class ByReference extends STU_CFG_GRAP_PIC implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_GRAP_PIC implements Structure.ByValue + { + } + } + + // 叠加与抓图配置 + public static class STU_CFG_OVERLAP_PIC extends Structure + { + public STU_CFG_OVERLAP stuOverLap; + public STU_CFG_GRAP_PIC stuGrapPic; + public byte[] reserved = new byte[256]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stuOverLap", "stuGrapPic", "reserved"}); + } + + public static class ByReference extends STU_CFG_OVERLAP_PIC implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_OVERLAP_PIC implements Structure.ByValue + { + } + } + + //////////////////////////////////////////////////////////////////////////////////////////////////// + // 人脸过滤参数使用区间值 + public static class STU_CFG_INTELLI_SCENE_SECTION_CONFIG_PARAM extends Structure + { + public int nMaxFaceSize; // 最大人脸像素,构成区间[nFaceSize, nMaxFaceSize] + public float fMinBlurThreshold; // 最小模糊度,构成区间[fMinBlurThreshold, fBlurThreshold] + public float fMinPoseRoll; // 最小roll角度,构成区间[fMinPoseRoll, fPoseRoll] + public float fMinPosePitch; // 最小pitch角度,构成区间[fMinPosePitch,fPosePitch] + public float fMinPoseYaw; // 最小yaw角度,构成区间[fMinPoseYaw, fPoseYaw] + public byte[] reserved = new byte[64]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nMaxFaceSize", "fMinBlurThreshold", "fMinPoseRoll", + "fMinPosePitch", "fMinPoseYaw", "reserved"}); + } + + public static class ByReference extends STU_CFG_INTELLI_SCENE_SECTION_CONFIG_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_INTELLI_SCENE_SECTION_CONFIG_PARAM implements Structure.ByValue + { + } + } + + // 识别参数 + public static class STU_CFG_INTELLI_SCENE_DOOR_RECOGNIZE_PARAM extends Structure + { + public int nRecogniseInterval; // 人脸推送识别间隔 + public int nRecogniseCount; // 识别结果推送次数 + public int nRecogniseMinFaceSize; // 识别的最小人脸像素 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nRecogniseInterval", "nRecogniseCount", + "nRecogniseMinFaceSize", "reserved"}); + } + + public static class ByReference extends STU_CFG_INTELLI_SCENE_DOOR_RECOGNIZE_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_INTELLI_SCENE_DOOR_RECOGNIZE_PARAM implements Structure.ByValue + { + } + } + + // 人脸检测场景全局参数 + public static class STU_CFG_INTELLI_SCENE_FACE_DETECT_GLOBAL_PARAM extends Structure + { + public int nFaceSize; // 抓拍人脸的最小像素 + public int nAnalyseInterval; // 算法处理间隔, 单位 ms,范围 0-2000,0 表示不作限制 + // 间隔越短算法分析的帧越多,检测率越高,耗时越大 + public int nAnalyseCount; // 满足过滤阈值的最大处理次数,范围 0-20 + // 算法分析同一人脸达到次数后,不再分析此人脸 + public float fPoseRoll; // 最大转头角度;roll 角度 + public float fPosePitch; // 最大点头角度;picth 角度 + public float fPoseYaw; // 最大摇头角度;yaw 角度 + public float fBlurThreshold; // 抓拍人脸的模糊程度约束 + + public STU_RECT_I stuDetectRect; // 人脸检测区域 [0-8192]坐标系 + + public float fLandMarkConfidence; // landMark置信度,区间范围[0-1],越大越好,小于该值不做抓拍和识别 + + public int bStaticFaceFilterEnable; // 静态人脸过滤使能 + public int nStaticFaceFilterSensitive; // 静态人脸过滤灵敏度[1,99]值越大越灵敏 + + public int bDoFeature; // 是否支持只抽取特征值、写入图片冗余信息功能 + public int bRecogniseAttribute; // 人脸属性上报使能开关 + + public int bMeetSafeLimit; // 是否使用安全边界,STU_CFG_CAPTURE_MODE.szMode = "BEST" 时使用 + + public int bSectionConfigEnable; // 抓拍是否使用人脸过滤参数参数区间,STU_CFG_CAPTURE_MODE.szMode = "AUTO" 时使用 + public STU_CFG_INTELLI_SCENE_SECTION_CONFIG_PARAM stuSectionConfig; // 人脸过滤参数参数区间,STU_CFG_CAPTURE_MODE.szMode = "AUTO" 时使用 + + public STU_CFG_INTELLI_SCENE_DOOR_RECOGNIZE_PARAM stuDoorRecognizsParam; // 识别参数,STU_CFG_CAPTURE_MODE.nRecognizeMode = 0 - 人脸识别门禁模式 时使用 + + public byte[] reserved = new byte[324]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nFaceSize", "nAnalyseInterval", "nAnalyseCount", + "fPoseRoll", "fPosePitch", "fPoseYaw", "fBlurThreshold", "stuDetectRect", + "fLandMarkConfidence", "bStaticFaceFilterEnable", "nStaticFaceFilterSensitive", + "bDoFeature", "bRecogniseAttribute", "bMeetSafeLimit", "bSectionConfigEnable", + "stuSectionConfig", "stuDoorRecognizsParam", "reserved"}); + } + + public static class ByReference extends STU_CFG_INTELLI_SCENE_FACE_DETECT_GLOBAL_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_INTELLI_SCENE_FACE_DETECT_GLOBAL_PARAM implements Structure.ByValue + { + } + } + + // 本机语言配置 + public static class STU_CFG_LANGUAGE extends Structure + { + // 简体中文 SimpChinese , 英文 English + public byte[] szLanguage = new byte[NetDefs.MAX_LANGUAGE_LENGTH]; + // 保留字节 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szLanguage", "reserved"}); + } + + public static class ByReference extends STU_CFG_LANGUAGE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_LANGUAGE implements Structure.ByValue + { + } + } + + //////////////////////////////////////////////////////////////////////////////////////////////////// + //联网业务配置 + public static class STU_CFG_WIRELESS_PPP_CONFIG extends Structure + { + // 是否启用ppp拨号连接 + public int bEnable; + // IMEI,此字段暂为只读,设置无效,Read only + public byte[] szIMEI = new byte[64]; + // 保留字节 + public byte[] reserved = new byte[448]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szIMEI", "reserved"}); + } + + public static class ByReference extends STU_CFG_WIRELESS_PPP_CONFIG implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_WIRELESS_PPP_CONFIG implements Structure.ByValue + { + } + } + + // 手机4G网络配置 + public static class STU_CFG_MOBILE_NET_CONFIG extends Structure + { + // 联网业务配置实际数量,最大 MAX_MOBILE_WIRELESS_PPP_CONFIG_COUINT 个 + public int nWirelessPPPCfgCount; + // 联网业务配置 + public STU_CFG_WIRELESS_PPP_CONFIG[] stWirelessPPPCfgs = new STU_CFG_WIRELESS_PPP_CONFIG[NetDefs.MAX_MOBILE_WIRELESS_PPP_CFG_COUINT]; + // 保留字节 + public byte[] reserved = new byte[1024]; + + public STU_CFG_MOBILE_NET_CONFIG() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nWirelessPPPCfgCount", "stWirelessPPPCfgs", "reserved"}); + } + + public static class ByReference extends STU_CFG_MOBILE_NET_CONFIG implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_MOBILE_NET_CONFIG implements Structure.ByValue + { + } + } + + //////////////////////////////////////////////////////////////////////////////////////////////////// + // 人脸检测智能场景配置 + public static class STU_CFG_INTELLI_SCENE_FACE_DETECT extends Structure + { + public byte[] szClass = new byte[32]; // 业务大类, 不可设置 + public byte[] szAlgorithm = new byte[32]; // 算法版本,不可设置 + public STU_CFG_INTELLI_SCENE_FACE_DETECT_GLOBAL_PARAM stuParam; // 人脸检测场景全局参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szClass", "szAlgorithm", "stuParam"}); + } + + public static class ByReference extends STU_CFG_INTELLI_SCENE_FACE_DETECT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_INTELLI_SCENE_FACE_DETECT implements Structure.ByValue + { + } + } + + // 人脸检测抓拍具体配置 + public static class STU_CFG_INTELLI_RULE_FD_CFG extends Structure + { + public int bRecogniseFace; // 是否需要识别属性(年龄、性别等),需要SupportedRules能力支持 + public int nSnapInterval; // 抓拍间隔,单位 ms + // 抓拍模式为 Auto 或 Custom 时使用 + public int nQualityThreshold; // 质量阈值 [0-100],小于阈值的图片会被过滤 + // 抓拍模式为 Custom 是使用 + public byte[] reserved = new byte[64]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bRecogniseFace", "nSnapInterval", "nQualityThreshold", "reserved"}); + } + + public static class ByReference extends STU_CFG_INTELLI_RULE_FD_CFG implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_INTELLI_RULE_FD_CFG implements Structure.ByValue + { + } + } + + // 人脸检测抓拍规则配置 + public static class STU_CFG_INTELLI_RULE_FACE_DETECT extends Structure + { + public int bEnable; // 规则使能 + public byte[] szClass = new byte[32]; // 业务大类, 不可设置 + public byte[] szType = new byte[32]; // 业务小类, 不可设置 + public byte[] szName = new byte[32]; // 规则名称, 不可设置 + public STU_CFG_INTELLI_RULE_FD_CFG stuConfig; // 检测配置信息 + public STU_EVENT_HANDLER stuEventHandler; // 视频分析联动 + public byte[] reserved = new byte[64]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szClass", "szType", + "szName", "stuConfig", "stuEventHandler", "reserved"}); + } + + public static class ByReference extends STU_CFG_INTELLI_RULE_FACE_DETECT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_INTELLI_RULE_FACE_DETECT implements Structure.ByValue + { + } + } + + // 人脸检测识别规则配置 + public static class STU_CFG_INTELLI_RULE_FACE_RECOGNIZE extends Structure + { + public int bEnable; // 规则使能 + public byte[] szClass = new byte[32]; // 业务大类, 不可设置 + public byte[] szType = new byte[32]; // 业务小类, 不可设置 + public byte[] szNam = new byte[32]; // 规则名称, 不可设置 + public STU_EVENT_HANDLER stuEventHandler; // 视频分析联动 + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szClass", "szType", + "szName", "stuConfig", "stuEventHandler", "reserved"}); + } + + public static class ByReference extends STU_CFG_INTELLI_RULE_FACE_RECOGNIZE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_INTELLI_RULE_FACE_RECOGNIZE implements Structure.ByValue + { + } + } + + // 人脸检测统计具体配置 + public static class STU_CFG_INTELLI_RULE_FD_STAT_CFG extends Structure + { + public int nInterval; // 统计周期, 单位 s + public byte[] reserved = new byte[64]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nInterval", "reserved"}); + } + + public static class ByReference extends STU_CFG_INTELLI_RULE_FD_STAT_CFG implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_INTELLI_RULE_FD_STAT_CFG implements Structure.ByValue + { + } + } + + // 人脸检测统计规则配置 + public static class STU_CFG_INTELLI_RULE_FACE_STATISTIC extends Structure + { + public int bEnable; // 规则使能 + public byte[] szClass = new byte[32]; // 业务大类, 不可设置 + public byte[] szType = new byte[32]; // 业务小类, 不可设置 + public byte[] szName = new byte[32]; // 规则名称, 不可设置 + public STU_CFG_INTELLI_RULE_FD_STAT_CFG stuConfig; // 统计配置信息 + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szClass", "szType", "szName", "stuConfig", "reserved"}); + } + + public static class ByReference extends STU_CFG_INTELLI_RULE_FACE_STATISTIC implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_INTELLI_RULE_FACE_STATISTIC implements Structure.ByValue + { + } + } + + public static class STU_CFG_PTZ_CALIBRATE_AREA_POS_PARAM extends Structure + { + public short nx; + public short ny; + public byte nz; + public byte[] reserved = new byte[3]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nx", "ny", "nz", "reserved"}); + } + + public static class ByReference extends STU_CFG_PTZ_CALIBRATE_AREA_POS_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_PTZ_CALIBRATE_AREA_POS_PARAM implements Structure.ByValue + { + } + } + + // 球机智能场景校正区域参数 + public static class STU_CFG_INTELLI_SCENE_SD_TRAFFIC_CALIBRATE_AREA_PARAM extends Structure + { + public STU_POLY_POINTS stArea; // 车牌标定区域 + // 多边形中每个顶点的坐标坐标归一化到[0,8192)区间 + // P 0~3600,T -1800~1800,Z 0~127 + public STU_CFG_PTZ_CALIBRATE_AREA_POS_PARAM stCaliPosition; + public int nCalibratePixel; // 违停球,设置车牌定位时,相机二次变倍的车牌像素大小 + // 80~200(像素),表示变倍到指定的车牌像素大小 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stArea", "stCaliPosition", "nCalibratePixel"}); + } + + public static class ByReference extends STU_CFG_INTELLI_SCENE_SD_TRAFFIC_CALIBRATE_AREA_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_INTELLI_SCENE_SD_TRAFFIC_CALIBRATE_AREA_PARAM implements Structure.ByValue + { + } + } + + // 球机智能场景全局参数 + public static class STU_CFG_INTELLI_SCENE_SD_TRAFFIC_PARAM extends Structure + { + public int bEnable; // 使能 + public int nPresetID; // 场景编号,0表示单场景 + public byte[] szName = new byte[16]; // 场景名称 + public STU_POLY_POINTS stDetectRegion; // 检测区域,多边形中每个顶点的坐标坐标归一化到[0,8192)区间 + public int nSensitivity; // 区域检测物体灵敏度,取值1~10,值越小灵敏度越低 + public STU_CFG_INTELLI_SCENE_SD_TRAFFIC_CALIBRATE_AREA_PARAM stCalibrateArea; // 标定区域 + public byte[] reserved = new byte[512]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "nPresetID", "szName", + "stDetectRegion", "nSensitivity", "stCalibrateArea", "reserved"}); + } + + public static class ByReference extends STU_CFG_INTELLI_SCENE_SD_TRAFFIC_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_INTELLI_SCENE_SD_TRAFFIC_PARAM implements Structure.ByValue + { + } + } + + // 球机智能场景配置 + public static class STU_CFG_INTELLI_SCENE_SD_TRAFFIC extends Structure + { + public byte[] szClass = new byte[32]; // 业务大类, 不可设置 + public byte[] szAlgorithm = new byte[32]; // 算法版本,不可设置 + public STU_CFG_INTELLI_SCENE_SD_TRAFFIC_PARAM stuParam; // 球机智能场景全局参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szClass", "szAlgorithm", "stuParam"}); + } + + public static class ByReference extends STU_CFG_INTELLI_SCENE_SD_TRAFFIC implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_INTELLI_SCENE_SD_TRAFFIC implements Structure.ByValue + { + } + } + + //////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 违停抓拍设置 + public static class STU_CFG_INTELLI_RULE_SD_TRAFFIC_RULE_PARAM extends Structure + { + public int[] emSnapshotType = new int[NetDefs.MAX_SD_TRAFFIC_SETTING_SNAPSHOT_COUNT]; // 抓拍类型数组,4次抓拍 + public int[] nSnapshotInterval = new int[NetDefs.MAX_SD_TRAFFIC_SETTING_SNAPSHOT_COUNT]; // 抓拍时间间隔,4次抓拍 + public int emShanpshotMode; // 抓拍模式 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emSnapshotType", "nSnapshotInterval", "emShanpshotMode"}); + } + + public static class ByReference extends STU_CFG_INTELLI_RULE_SD_TRAFFIC_RULE_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_INTELLI_RULE_SD_TRAFFIC_RULE_PARAM implements Structure.ByValue + { + } + } + + // 违停规则配置 + public static class STU_CFG_INTELLI_RULE_SD_TRAFFIC_CFG extends Structure + { + public int nPresetID; // 场景编号,0表示单场景 + public int nSnapInterval; // 不重复抓拍的时间,单位小时,范围1~24 + public int nFeatureRatio; // 特写抠图比例 + // 单位:%,范围30-90;当值为30,则抠图以车牌中心为中心,宽度为图片宽度的30% + public STU_CFG_INTELLI_RULE_SD_TRAFFIC_RULE_PARAM stSnapshotWithRule; // 抓拍设置 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nPresetID", "nSnapInterval", "nFeatureRatio", "stSnapshotWithRule"}); + } + + public static class ByReference extends STU_CFG_INTELLI_RULE_SD_TRAFFIC_CFG implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_INTELLI_RULE_SD_TRAFFIC_CFG implements Structure.ByValue + { + } + } + + // 球机智能场景违停规则配置 + public static class STU_CFG_INTELLI_RULE_SD_TRAFFIC extends Structure + { + public int bEnable; // 规则使能 + public byte[] szClass = new byte[32]; // 业务大类, 不可设置 + public byte[] szType = new byte[32]; // 业务小类, 不可设置 + public byte[] szName = new byte[32]; // 规则名称, 不可设置 + public STU_CFG_INTELLI_RULE_SD_TRAFFIC_CFG stuConfig = new STU_CFG_INTELLI_RULE_SD_TRAFFIC_CFG(); // 检测配置信息 + public STU_EVENT_HANDLER stuEventHandler = new STU_EVENT_HANDLER(); // 视频分析联动 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szClass", "szType", + "szName", "stuConfig", "stuEventHandler", "reserved"}); + } + + public static class ByReference extends STU_CFG_INTELLI_RULE_SD_TRAFFIC implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_INTELLI_RULE_SD_TRAFFIC implements Structure.ByValue + { + } + } + + //////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 非机动车横穿马路规则 + public static class STU_RULE_SD_TRAFFIC_ROAD_CROSSING extends Structure + { + // 场景编号,0表示单场景 + public int nPresetID; + // 超时时间,单位秒 + public int nTimeOut; + // 特写抠图比例 + // 单位 %,范围30-90 + // 当值为30,则抠图以非机动车中心为中心,宽度为图片宽度的30% + // 当值为90,则抠图为以图片中心为中心,宽度为目标宽度的90% + public int nFeatureRatio; + // 抓拍张数 + public int nSnapShotTimes; + // 检测线信息数组,最大长度8数组,数组的下标表示各条检测线,从0开 + public STU_POLY_POINTS[] stuDetectLanes = new STU_POLY_POINTS[NetDefs.MAX_ROAD_CROSSING_DETECT_LANE_MAX_NUM]; + // 保留位 + public byte[] reserved = new byte[512]; + + public STU_RULE_SD_TRAFFIC_ROAD_CROSSING() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nPresetID", "nTimeOut", "nFeatureRatio", + "nSnapShotTimes", "stuDetectLanes", "reserved"}); + } + + public static class ByReference extends STU_RULE_SD_TRAFFIC_ROAD_CROSSING implements Structure.ByReference + { + } + + public static class ByValue extends STU_RULE_SD_TRAFFIC_ROAD_CROSSING implements Structure.ByValue + { + } + } + + // 球机智能场景非机动车横穿马路规则 + public static class STU_CFG_INTELLI_RULE_SD_TRAFFIC_ROAD_CROSSING extends Structure + { + public int bEnable; // 规则使能 + public byte[] szClass = new byte[32]; // 业务大类, 不可设置 + public byte[] szType = new byte[32]; // 业务小类, 不可设置 + public byte[] szName = new byte[32]; // 规则名称, 不可设置 + public STU_RULE_SD_TRAFFIC_ROAD_CROSSING stuConfig = new STU_RULE_SD_TRAFFIC_ROAD_CROSSING(); // 检测配置信息 + public STU_EVENT_HANDLER stuEventHandler = new STU_EVENT_HANDLER(); // 视频分析联动 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szClass", "szType", + "szName", "stuConfig", "stuEventHandler", "reserved"}); + } + + public static class ByReference extends STU_CFG_INTELLI_RULE_SD_TRAFFIC_ROAD_CROSSING implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_INTELLI_RULE_SD_TRAFFIC_ROAD_CROSSING implements Structure.ByValue + { + } + } + + //////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 卡口规则具体配置 + public static class STU_CFG_INTELLI_RULE_TRAFFIC_PASS_CFG extends Structure + { + public int nLaneNumber; // 车道编号 + public byte nForward; // 相对车道抓拍的车辆行驶方向 正向行驶 0-不设置 1-设置 + public byte nBackward; // 相对车道抓拍的车辆行驶方向 逆向行驶 0-不设置 1-设置 + // 如果正向、逆向都不设置,默认设置为正向 + public byte[] reserved1 = new byte[2]; // 字节对齐 + public byte[] reserved2 = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nLaneNumber", "nForward", "nBackward", "reserved1", "reserved2"}); + } + + public static class ByReference extends STU_CFG_INTELLI_RULE_TRAFFIC_PASS_CFG implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_INTELLI_RULE_TRAFFIC_PASS_CFG implements Structure.ByValue + { + } + } + + // 卡口规则配置 + public static class STU_CFG_INTELLI_RULE_TRAFFIC_PASS extends Structure + { + public int bEnable; // 规则使能 + public byte[] szClass = new byte[32]; // 业务大类, 不可设置 + public byte[] szType = new byte[32]; // 业务小类, 不可设置 + public byte[] szName = new byte[32]; // 规则名称, 不可设置 + public STU_CFG_INTELLI_RULE_TRAFFIC_PASS_CFG stuConfig; // 卡口配置信息 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szClass", "szType", "szName", "stuConfig", "reserved"}); + } + + public static class ByReference extends STU_CFG_INTELLI_RULE_TRAFFIC_PASS implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_INTELLI_RULE_TRAFFIC_PASS implements Structure.ByValue + { + } + } + + //报警输入参数 + public static class STU_CFG_ALARM_IN_PARAM extends Structure + { + public int bEnable; // 报警输入使能 + public byte bSensorType; // 传感器类型, 0是常开, 1是常闭 + public STU_EVENT_HANDLER stuAlarmHandle; // 报警联动参数 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "bSensorType", "stuAlarmHandle", "reserved"}); + } + + public static class ByReference extends STU_CFG_ALARM_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ALARM_IN_PARAM implements Structure.ByValue + { + } + } + + //报警输出参数 + public static class STU_CFG_ALARM_OUT_PARAM extends Structure + { + // 输出模式, 0是自动输出, 1是强制开启报警, 2是强制关闭报警 + public byte bMode; + public byte[] reserved = new byte[35]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bMode", "reserved"}); + } + + public static class ByReference extends STU_CFG_ALARM_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ALARM_OUT_PARAM implements Structure.ByValue + { + } + } + + // 报警输入输出参数 + public static class STU_CFG_ALARM_PARAM extends Structure + { + public int uAlarmInChannels; // 实际报警输入通道数,获取后不能修改 + public STU_CFG_ALARM_IN_PARAM[] stuAlarmInParams = new STU_CFG_ALARM_IN_PARAM[NetDefs.MAX_ALARM_IN_CHANNEL_NUM]; // 报警输入参数 + public int uAlarmOutChannels; // 实际报警输出通道数,获取后不能修改 + public STU_CFG_ALARM_OUT_PARAM[] stuAlarmOutParams = new STU_CFG_ALARM_OUT_PARAM[NetDefs.MAX_ALARM_OUT_CHANNEL_NUM]; // 报警输出参数 + + public STU_CFG_ALARM_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"uAlarmInChannels", "stuAlarmInParams", "uAlarmOutChannels", "stuAlarmOutParams"}); + } + + public static class ByReference extends STU_CFG_ALARM_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ALARM_PARAM implements Structure.ByValue + { + } + } + /////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 音频输入参数 + public static class STU_CFG_AUDIO_IN_PARAM extends Structure + { + public int emMode; // 音频输入设备模式, EM_AUDIO_IN_DEVICE_MODE_TYPE + public int nVolumeIn; // 音频输入音量,取值0-100,0表示静音 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emMode", "nVolumeIn", "reserved"}); + } + + public static class ByReference extends STU_CFG_AUDIO_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_AUDIO_IN_PARAM implements Structure.ByValue + { + } + } + + // 音频输出参数 + public static class STU_CFG_AUDIO_OUT_PARAM extends Structure + { + public int nVolumeOut; // 音频输出音量,取值0-100,0表示静音 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nVolumeOut", "reserved"}); + } + + public static class ByReference extends STU_CFG_AUDIO_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_AUDIO_OUT_PARAM implements Structure.ByValue + { + } + } + + // 音频输入输出参数 + public static class STU_CFG_AUDIO_PARAM extends Structure + { + // 实际报警输入通道数 + public int nAudioInChannels; + // 报警输入参数,内存由外部申请和释放 + public STU_CFG_AUDIO_IN_PARAM[] stuAudioInParams = new STU_CFG_AUDIO_IN_PARAM[NetDefs.MAX_AUDIO_IN_CHANNEL_NUM]; + // 实际报警输出通道数 + public int nAudioOutChannels; + // 报警输出参数,内存由外部申请和释放 + public STU_CFG_AUDIO_OUT_PARAM[] stuAudioOutParams = new STU_CFG_AUDIO_OUT_PARAM[NetDefs.MAX_AUDIO_OUT_CHANNEL_NUM]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nAudioInChannels", "stuAudioInParams", "nAudioOutChannels", "stuAudioOutParams"}); + } + + public static class ByReference extends STU_CFG_AUDIO_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_AUDIO_PARAM implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 编码能力集 + public static class STU_CFG_ENCODE_CAPS extends Structure + { + public int uMinMajorStreamBitrate; // 设备支持的最小码率 + public int uMaxMajorStreamBitrate; // 设备支持的最大码率 + public int uMaxExtraStreams; // 设备支持的最大辅码流数 + public int uSupportedStandardNums; // 设备最大支持的视频制式数,最大支持4个 + public byte[] bSupportedStandardValues = new byte[4]; // EM_STANDARD_TYPE 类型 + public byte[] reserved = new byte[128]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uMinMajorStreamBitrate", "uMaxMajorStreamBitrate", "uMaxExtraStreams", + "uSupportedStandardNums", "bSupportedStandardValues", "reserved"}); + } + + public static class ByReference extends STU_CFG_ENCODE_CAPS implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ENCODE_CAPS implements Structure.ByValue + { + } + } + + // 视频配置能力 + public static class STU_CFG_VIDEOCONFIG_CAPS extends Structure + { + public int uMiniBitRate; + public int uMaxBitRate; + + public int uCompressionTypeNums; // 最多10个 EM_VIDEO_STREAM_CODE_TYPE + public byte[] nCompressionTypeValus = new byte[10]; + public byte[] reserved1 = new byte[6]; // 保留位1 + + public int uH264ProfilesTypeNums; // 最多10个 + public byte[] bH264ProfilesTypeValues = new byte[10]; // EM_H264_ENCODE_LEVEL + public byte[] reserved2 = new byte[6]; // 保留位2 + + public int uMaxFps; + public int uMaxRoiCount; + + public int uResolutionTypeNums; // 最多10个 + public byte[] nResolutionTypeValus = new byte[10]; // EM_VIDEO_STREAM_RESOLUTION_TYPE + public byte[] reserved3 = new byte[6]; // 保留位3 + + public byte[] reserved4 = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uMiniBitRate", "uMaxBitRate", "uCompressionTypeNums", + "nCompressionTypeValus", "reserved1", "uH264ProfilesTypeNums", "bH264ProfilesTypeValues", "reserved2", + "uMaxFps", "uMaxRoiCount", "uResolutionTypeNums", "nResolutionTypeValus", "reserved3", "reserved4"}); + } + + public static class ByReference extends STU_CFG_VIDEOCONFIG_CAPS implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOCONFIG_CAPS implements Structure.ByValue + { + } + } + + // 编码配置能力集 + public static class STU_CFG_CONFIG_CAPS extends Structure + { + public int iMainStreamCapsCount; // 最大3个 + public STU_CFG_VIDEOCONFIG_CAPS[] stuMainStreamVideoCaps = new STU_CFG_VIDEOCONFIG_CAPS[NetDefs.MAX_MAIN_STREAM_ENCODE_COUNT]; + public int iExtraStreamCapsCount; // 最大3个 + public STU_CFG_VIDEOCONFIG_CAPS[] stuExtraStreamVideoCaps = new STU_CFG_VIDEOCONFIG_CAPS[NetDefs.MAX_EXTRA_STREAM_ENCODE_COUNT]; + public int iCaptureStreamCapsCount; // 最大3个 + public STU_CFG_VIDEOCONFIG_CAPS[] stuCaptureStreamCaps = new STU_CFG_VIDEOCONFIG_CAPS[NetDefs.MAX_CAPTURE_STREAM_ENCODE_COUNT]; + public byte[] reserved = new byte[1024]; // 保留位 + + public STU_CFG_CONFIG_CAPS() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"iMainStreamCapsCount", "stuMainStreamVideoCaps", "iExtraStreamCapsCount", + "stuExtraStreamVideoCaps", "iCaptureStreamCapsCount", "stuCaptureStreamCaps", "reserved"}); + } + + public static class ByReference extends STU_CFG_CONFIG_CAPS implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_CONFIG_CAPS implements Structure.ByValue + { + } + } + + // 货柜能力参数 + public static class STU_GOODS_SHELVE_CAP extends Structure + { + public int nMaxRow; // 货柜最大行数 + public int nMaxColumn; // 货柜最大列数 + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nMaxRow", "nMaxColumn", "reserved"}); + } + + public static class ByReference extends STU_GOODS_SHELVE_CAP implements Structure.ByReference + { + } + + public static class ByValue extends STU_GOODS_SHELVE_CAP implements Structure.ByValue + { + } + } + + // 新零售货柜能力 + public static class STU_CFG_GOODS_SHELVE_CAPS extends Structure + { + // 最大监控货柜数,最大MAX_GOODS_CONTAINER_COUNT个 + public int nMaxShelveCount; + // 货柜能力集 + public STU_GOODS_SHELVE_CAP[] stContainerCaps = new STU_GOODS_SHELVE_CAP[NetDefs.MAX_GOODS_SHELVE_COUNT]; + // 保留位 + public byte[] reserved = new byte[1024]; + + public STU_CFG_GOODS_SHELVE_CAPS() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nMaxShelveCount", "stContainerCaps", "reserved"}); + } + + public static class ByReference extends STU_CFG_GOODS_SHELVE_CAPS implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_GOODS_SHELVE_CAPS implements Structure.ByValue + { + } + } + + // 编码参数能力集合 + public static class STU_CFG_ENCODECAPS_PARAM extends Structure + { + public STU_CFG_CONFIG_CAPS stuCfgConfigCaps; + public STU_CFG_ENCODE_CAPS stuCfgEncodeCaps; + public byte[] reserved = new byte[1024]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stuCfgConfigCaps", "stuCfgEncodeCaps", "reserved"}); + } + + public static class ByReference extends STU_CFG_ENCODECAPS_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ENCODECAPS_PARAM implements Structure.ByValue + { + } + } + + // 视频编码配置参数 + public static class STU_CFG_ENCODE_VIDEO_CONFIG_PARAM extends Structure + { + public int nCompressionType; // 编码类型,取值为 EM_VIDEO_STREAM_CODE_TYPE + public int nCtrlType; // 码流控制类型,取值为 EM_VIDEO_FORMA_CTRL_TYPE + public int nResolutionType; // 分辨率类型,取值为 EM_VIDEO_STREAM_RESOLUTION_TYPE + public int nFPS; // 帧率 + public int nBitRate; // 码率大小 + public int nGop; // I 帧间隔 + public int nQuality; // 图像质量,取值[1-6] + public int nH264SVCTLayer; // h264的svc层数,仅在h264编码时有效 + public int nH264EncodeLevel; // h264编码级别,仅用于h264编码,取值为枚举 EM_H264_ENCODE_LEVEL + public int nSize; // 编码后文件大小(bytes),只支持图片码流,固定码流模式("CBR")下有效 + public int bWidthHeightExchange; // 分辨率宽高是否互换,TRUE - 互换,FALSE - 不互换或无效 + // 此字段目前只针对面板机辅码流有效 + public byte[] reserved = new byte[248]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nCompressionType", "nCtrlType", "nResolutionType", "nFPS", + "nBitRate", "nGop", "nQuality", "nH264SVCTLayer", "nH264EncodeLevel", "nSize", + "bWidthHeightExchange", "reserved"}); + } + + public static class ByReference extends STU_CFG_ENCODE_VIDEO_CONFIG_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ENCODE_VIDEO_CONFIG_PARAM implements Structure.ByValue + { + } + } + + // 编码配置参数 + public static class STU_CFG_ENCODE_CONFIG_PARAM extends Structure + { + public int bEnable; // 使能 + public STU_CFG_ENCODE_VIDEO_CONFIG_PARAM stuEncodeVideoConfig; + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "stuEncodeVideoConfig", "reserved"}); + } + + public static class ByReference extends STU_CFG_ENCODE_CONFIG_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ENCODE_CONFIG_PARAM implements Structure.ByValue + { + } + } + + // 编码配置信息 + public static class STU_CFG_ENCODE_CONFIG extends Structure + { + // 主码流个数 + public int uMainStreamNums; + // 主码流配置信息,对应能力最大支持数MAX_EXTRA_STREAM_ENCODE_COUNT,数组下标0-普通编码,1-动检编码,2-报警编码 + public STU_CFG_ENCODE_CONFIG_PARAM[] stuMainStreamEncodeConfig = new STU_CFG_ENCODE_CONFIG_PARAM[NetDefs.MAX_MAIN_STREAM_ENCODE_COUNT]; + // 辅码流个数 + public int uExtraStreamNums; + // 辅码流配置信息,对应能力最大支持数MAX_EXTRA_STREAM_ENCODE_COUNT,数组下标0-辅码流1,1-辅码流2,2-辅码流3 + public STU_CFG_ENCODE_CONFIG_PARAM[] stuExtraStreamEncodeConfig = new STU_CFG_ENCODE_CONFIG_PARAM[NetDefs.MAX_EXTRA_STREAM_ENCODE_COUNT]; + // 抓图码流个数 + public int uCaptureStreamNums; + // 图片码流配置信息,对应能力最大支持数MAX_EXTRA_STREAM_ENCODE_COUNT,数组下标0-普通编码,1-动检编码,2-报警编码 + public STU_CFG_ENCODE_CONFIG_PARAM[] stuCaptureStreamEncodeConfig = new STU_CFG_ENCODE_CONFIG_PARAM[NetDefs.MAX_CAPTURE_STREAM_ENCODE_COUNT]; + // 保留字节 + public byte[] reserved = new byte[2048]; + + public STU_CFG_ENCODE_CONFIG() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"uMainStreamNums", "stuMainStreamEncodeConfig", "reserved1", "uExtraStreamNums", + "stuExtraStreamEncodeConfig", "reserved2", "uCaptureStreamNums", "stuCaptureStreamEncodeConfig", "reserved3"}); + } + + public static class ByReference extends STU_CFG_ENCODE_CONFIG implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ENCODE_CONFIG implements Structure.ByValue + { + } + } + + // 编码参数配置 + public static class STU_CFG_ENCODE_PARAM extends Structure + { + public int iChannelNo; // 通道号, 从 0 开始 + public STU_CFG_ENCODE_CONFIG stuEncodeConfig; // 编码参数配置 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"iChannelNo", "stuEncodeConfig", "reserved"}); + } + + public static class ByReference extends STU_CFG_ENCODE_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ENCODE_PARAM implements Structure.ByValue + { + } + } + + //////////////////////////////////////////////////////////////////////////////////////////////////// + // 单种压缩格式参数 + public static class STU_AUDIO_ENCODE_SUPPORTED_COMPRESS_ITEM extends Structure + { + public int nFrequency; // 音频采样频率 + public int nDepth; // 采样深度 + public int nPacketPeriod; // 打包周期,单位ms,0表示使用默认周期 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nFrequency", "nDepth", "nPacketPeriod", "reserved"}); + } + + public static class ByReference extends STU_AUDIO_ENCODE_SUPPORTED_COMPRESS_ITEM implements Structure.ByReference + { + } + + public static class ByValue extends STU_AUDIO_ENCODE_SUPPORTED_COMPRESS_ITEM implements Structure.ByValue + { + } + } + + // 压缩格式能力配置 + public static class STU_AUDIO_ENCODE_SUPPORTED_COMPRESS_ITEMS extends Structure + { + // 支持的音频压缩格式, EM_AUDIO_ENCODE_COMPRESS_TYPE + public int emCompressType; + // 实际元素数量,不超过MAX_AUDIO_ENCODE_COMPRESS_ITEM_COUNT + public int nItemCount; + // 压缩格式数组 + public STU_AUDIO_ENCODE_SUPPORTED_COMPRESS_ITEM[] stCompressItemArr = new STU_AUDIO_ENCODE_SUPPORTED_COMPRESS_ITEM[NetDefs.MAX_AUDIO_ENCODE_COMPRESS_ITEM_COUNT]; + + public STU_AUDIO_ENCODE_SUPPORTED_COMPRESS_ITEMS() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"emCompressType", "nItemCount", "stCompressItemArr"}); + } + + public static class ByReference extends STU_AUDIO_ENCODE_SUPPORTED_COMPRESS_ITEMS implements Structure.ByReference + { + } + + public static class ByValue extends STU_AUDIO_ENCODE_SUPPORTED_COMPRESS_ITEMS implements Structure.ByValue + { + } + } + + // 音频配置能力 + public static class STU_CFG_AUDIOCONFIG_CAPS extends Structure + { + // 实际支持的音频压缩格式数量,不超过MAX_AUDIO_ENCODE_COMPRESS_TYPE_COUNT + public int uCompressCount; + // 音频压缩格式支持种类数组 + public STU_AUDIO_ENCODE_SUPPORTED_COMPRESS_ITEMS[] stSupportCompressArr = new STU_AUDIO_ENCODE_SUPPORTED_COMPRESS_ITEMS[NetDefs.MAX_AUDIO_ENCODE_COMPRESS_TYPE_COUNT]; + + public STU_CFG_AUDIOCONFIG_CAPS() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"uCompressCount", "stSupportCompressArr"}); + } + + public static class ByReference extends STU_CFG_AUDIOCONFIG_CAPS implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_AUDIOCONFIG_CAPS implements Structure.ByValue + { + } + } + + // 音频编码能力集 + public static class STU_CFG_AUDIO_ENCODE_CAPS extends Structure + { + // 指定需要获取的码流类型(目前只支持主码流),默认EM_AUDIO_ENCODE_MASTER, 枚举类型:EM_AUDIO_ENCODE_CFG_STREAM_TYPE + public int emAudioStreamType; + // 最大MAX_AUDIO_STREAM_ENCODE_COUNT个 + public int nStreamAudioCapsCount; + // 音频配置能力数组 + public STU_CFG_AUDIOCONFIG_CAPS[] stuAudioStreamCapsArr = new STU_CFG_AUDIOCONFIG_CAPS[NetDefs.MAX_AUDIO_STREAM_ENCODE_COUNT]; + + public STU_CFG_AUDIO_ENCODE_CAPS() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"emAudioStreamType", "nStreamAudioCapsCount", "stuAudioStreamCapsArr"}); + } + + public static class ByReference extends STU_CFG_AUDIO_ENCODE_CAPS implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_AUDIO_ENCODE_CAPS implements Structure.ByValue + { + } + } + + // 音频编码配置参数 + public static class STU_CFG_ENCODE_AUDIO_CONFIG_PARAM extends Structure + { + // 当前音频压缩格式,支持的压缩格式,可通过对应能力获取, EM_AUDIO_ENCODE_COMPRESS_TYPE + public int emCompressType; + + // 音频采样频率, 8K~192K + public int nFrequency; + // 采样深度, 8, 16, 24位 + public int nDepth; + + // 编码码率 + // 不同编码类型定义不同: + // 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 nMode; + + // 打包周期, 单位ms, 0表示使用默认周期 + public int nPacketPeriod; + // 打包类型, 目前支持AL和PS, EM_AUDIO_ENCODE_PACK_TYPE + public int emPackType; + + // 保留字节 + public byte[] reserved = new byte[256]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emCompressType", "nFrequency", "nDepth", + "nMode", "nPacketPeriod", "emPackType", "reserved"}); + } + + public static class ByReference extends STU_CFG_ENCODE_AUDIO_CONFIG_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ENCODE_AUDIO_CONFIG_PARAM implements Structure.ByValue + { + } + } + + // 音频编码配置参数 + public static class STU_CFG_AUDIO_ENCODE_CONFIG_PARAM extends Structure + { + // 使能 + public int bEnable; + // 音频编码配置参数 + public STU_CFG_ENCODE_AUDIO_CONFIG_PARAM stuEncodeAudioConfig = new STU_CFG_ENCODE_AUDIO_CONFIG_PARAM(); + // 保留字节 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "stuEncodeAudioConfig", "reserved"}); + } + + public static class ByReference extends STU_CFG_AUDIO_ENCODE_CONFIG_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_AUDIO_ENCODE_CONFIG_PARAM implements Structure.ByValue + { + } + } + + // 音频编码参数配置 + public static class STU_CFG_AUDIO_ENCODE_PARAM extends Structure + { + // 指定码流类型(目前只支持主码流),默认EM_AUDIO_ENCODE_MASTER, 枚举类型:EM_AUDIO_ENCODE_CFG_STREAM_TYPE + public int emAudioStreamType; + // 通道号 + public int iChannelNo; + // 实际码流个数 + public int nAudioStreamCount; + // 码流配置信息,下标0-普通编码,1-动检编码,2-报警编码 + public STU_CFG_AUDIO_ENCODE_CONFIG_PARAM[] stuMainAudioEncodeConfig = new STU_CFG_AUDIO_ENCODE_CONFIG_PARAM[NetDefs.MAX_MAIN_STREAM_ENCODE_COUNT]; + // 保留参数 + public byte[] reserved = new byte[64]; + + public STU_CFG_AUDIO_ENCODE_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"emAudioStreamType", "iChannelNo", "nAudioStreamCount", + "stuMainAudioEncodeConfig", "reserved"}); + } + + public static class ByReference extends STU_CFG_AUDIO_ENCODE_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_AUDIO_ENCODE_PARAM implements Structure.ByValue + { + } + } + + //////////////////////////////////////////////////////////////////////////////////////////////////// + // 韦根配置 + public static class STU_CFG_WIE_GAND_ITEM extends Structure + { + public int uType; // 0-韦根26, 1-韦根34 + public byte[] szCtrlCode = new byte[16]; // 韦根控制码 + public byte[] reserve = new byte[64]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uType", "szCtrlCode", "reserve"}); + } + + public static class ByReference extends STU_CFG_WIE_GAND_ITEM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_WIE_GAND_ITEM implements Structure.ByValue + { + } + } + + // 韦根参数 + public static class STU_CFG_WIE_GAND_PARAM extends Structure + { + public int nRealCount; // 实际配置数量,此数量可通过能力获取 + // 韦根配置列表 + public STU_CFG_WIE_GAND_ITEM[] stWirGandItem = new STU_CFG_WIE_GAND_ITEM[NetDefs.MAX_WIE_GAND_CFG_NUM]; + public byte[] reserve = new byte[64]; // 保留字节 + + public STU_CFG_WIE_GAND_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nRealCount", "stWirGandItem", "reserve"}); + } + + public static class ByReference extends STU_CFG_WIE_GAND_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_WIE_GAND_PARAM implements Structure.ByValue + { + } + } + + // 外设IO口功能功能 + public static class STU_CFG_DEV_PREI_IO_ITEM extends Structure + { + public int emMode; // IO口功能,EM_DEV_PREI_IO_MODE + public byte[] reserve = new byte[64]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emMode", "reserve"}); + } + + public static class ByReference extends STU_CFG_DEV_PREI_IO_ITEM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_DEV_PREI_IO_ITEM implements Structure.ByValue + { + } + } + + // 外设IO配置参数 + public static class STU_CFG_DEV_PREI_IO_PARAM extends Structure + { + public int nRealCount; // 实际配置数量,此数量可通过能力获取 + // IO配置列表 + public STU_CFG_DEV_PREI_IO_ITEM[] stIOItem = new STU_CFG_DEV_PREI_IO_ITEM[NetDefs.MAX_DEV_PREI_IO_CFG_NUM]; + public byte[] reserve = new byte[64]; // 保留字节 + + public STU_CFG_DEV_PREI_IO_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nRealCount", "stIOItem", "reserve"}); + } + + public static class ByReference extends STU_CFG_DEV_PREI_IO_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_DEV_PREI_IO_PARAM implements Structure.ByValue + { + } + } + + // 补光灯配置 + public static class STU_CFG_SUPPLEMENT_LIGHT_ITEM extends Structure + { + public int emMode; // 工作模式, EM_DEV_SUP_LIGHT_MODE + public int uBrightness; // 补光灯亮度,范围[0, 100] + public byte[] reserve = new byte[64]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emMode", "uBrightness", "reserve"}); + } + + public static class ByReference extends STU_CFG_SUPPLEMENT_LIGHT_ITEM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_SUPPLEMENT_LIGHT_ITEM implements Structure.ByValue + { + } + } + + // 外设补光灯配置参数 + public static class STU_CFG_SUPPLEMENT_LIGHT_PARAM extends Structure + { + public int nRealCount; // 实际配置数量,此数量可通过能力获取 + // IO配置列表 + public STU_CFG_SUPPLEMENT_LIGHT_ITEM[] stSupLightItem = new STU_CFG_SUPPLEMENT_LIGHT_ITEM[NetDefs.MAX_DEV_SUPPLEMENT_LIGHT_CFG_NUM]; + public byte[] reserve = new byte[64]; // 保留字节 + + public STU_CFG_SUPPLEMENT_LIGHT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nRealCount", "stSupLightItem", "reserve"}); + } + + public static class ByReference extends STU_CFG_SUPPLEMENT_LIGHT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_SUPPLEMENT_LIGHT_PARAM implements Structure.ByValue + { + } + } + + // 485补光灯配置 + public static class STU_CFG_485SUPPLEMENT_LIGHT_ITEM extends Structure + { + public int emMode; // 工作模式,EM_DEV_SUP_LIGHT_MODE + public int uBrightness; // 补光灯亮度,范围[0, 255] + public int uPreValue; // 亮度预设值,范围为0~100 + public byte[] reserve = new byte[64]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emMode", "uBrightness", "uPreValue", "reserve"}); + } + + public static class ByReference extends STU_CFG_485SUPPLEMENT_LIGHT_ITEM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_485SUPPLEMENT_LIGHT_ITEM implements Structure.ByValue + { + } + } + + // 外设485补光灯配置参数 + public static class STU_CFG_485SUPPLEMENT_LIGHT_PARAM extends Structure + { + public int nRealCount; // 实际配置数量,此数量可通过能力获取 + // IO配置列表 + public STU_CFG_485SUPPLEMENT_LIGHT_ITEM[] stSupLightItem = new STU_CFG_485SUPPLEMENT_LIGHT_ITEM[NetDefs.MAX_DEV_SUPPLEMENT_LIGHT_CFG_NUM]; + public byte[] reserve = new byte[64]; // 保留字节 + + public STU_CFG_485SUPPLEMENT_LIGHT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nRealCount", "stSupLightItem", "reserve"}); + } + + public static class ByReference extends STU_CFG_485SUPPLEMENT_LIGHT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_485SUPPLEMENT_LIGHT_PARAM implements Structure.ByValue + { + } + } + + // 球机补光灯配置细节 + public static class STU_PTZ_SUPPLEMENT_LIGHT_DETAIL extends Structure + { + // 角度,int,灯光角度归一化值 + public int nAngle; + // 亮度,int,灯光亮度百分比值,0:关闭 (1~100)灯光亮度百分比 + public int nLight; + // 保留字节 + public byte[] reserve = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nAngle", "nLight", "reserve"}); + } + + public static class ByReference extends STU_PTZ_SUPPLEMENT_LIGHT_DETAIL implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_SUPPLEMENT_LIGHT_DETAIL implements Structure.ByValue + { + } + } + + // 球机补光灯配置 + public static class STU_PTZ_SUPPLEMENT_LIGHT_CFG extends Structure + { + // 控制模式 + // -1 - "Off" : 关闭 + // 0 - "Manual" :手动模式 + // 1 - "Auto" :自动模式 + // 2 - "ZoomPrio" : 倍率优先 + public int nMode; + + // 远光灯/中光灯/近光灯配置,Mode为Manual下使用 + // 远光灯实际数量 + public int nFarLightCount; + // 远光灯配置 + public STU_PTZ_SUPPLEMENT_LIGHT_DETAIL[] stFarLightDetails = new STU_PTZ_SUPPLEMENT_LIGHT_DETAIL[NetDefs.MAX_PTZ_SUPPLEMENT_LIGHT_DETAIL_NUM]; + + // 中光灯实际数量 + public int nMidLightCount; + // 中光灯配置 + public STU_PTZ_SUPPLEMENT_LIGHT_DETAIL[] stMidLightDetails = new STU_PTZ_SUPPLEMENT_LIGHT_DETAIL[NetDefs.MAX_PTZ_SUPPLEMENT_LIGHT_DETAIL_NUM]; + + // 近光灯实际数量 + public int nNearLightCount; + // 近光灯配置 + public STU_PTZ_SUPPLEMENT_LIGHT_DETAIL[] stNearLightDetails = new STU_PTZ_SUPPLEMENT_LIGHT_DETAIL[NetDefs.MAX_PTZ_SUPPLEMENT_LIGHT_DETAIL_NUM]; + + // 灯光补偿,Mode为ZoomPrio下使用 + public int nCorrection; + + // 保留字节 + public byte[] reserve = new byte[256]; + + public STU_PTZ_SUPPLEMENT_LIGHT_CFG() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nMode", "nFarLightCount", "stFarLightDetails", + "nMidLightCount", "stMidLightDetails", "nNearLightCount", "stNearLightDetails", + "nCorrection", "reserve"}); + } + + public static class ByReference extends STU_PTZ_SUPPLEMENT_LIGHT_CFG implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_SUPPLEMENT_LIGHT_CFG implements Structure.ByValue + { + } + } + + // 球机补光灯配置集合 + public static class STU_CFG_PTZ_SUPPLEMENT_LIGHT_PARAM extends Structure + { + // 实际灯个数 + public int nRealCount; + // 配置列表 + public STU_PTZ_SUPPLEMENT_LIGHT_CFG[] stPtzSupLightCfgs = new STU_PTZ_SUPPLEMENT_LIGHT_CFG[NetDefs.MAX_PTZ_SUPPLEMENT_LIGHT_CFG_NUM]; + // 保留字节 + public byte[] reserve = new byte[64]; + + public STU_CFG_PTZ_SUPPLEMENT_LIGHT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nRealCount", "stPtzSupLightCfgs", "reserve"}); + } + + public static class ByReference extends STU_CFG_PTZ_SUPPLEMENT_LIGHT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_PTZ_SUPPLEMENT_LIGHT_PARAM implements Structure.ByValue + { + } + } + + // 圆偏振镜配置 + public static class STU_CFG_CPL_PARAM extends Structure + { + // 工作模式 + // 0 - 强制关闭(CPL没有效果) + // 1 - 强制开启(CPL偏振镜起效果) + // 2 - 自动 + public int nMode; + // 保留字节 + public byte[] reserve = new byte[1024]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nMode", "reserve"}); + } + + public static class ByReference extends STU_CFG_CPL_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_CPL_PARAM implements Structure.ByValue + { + } + } + + //////////////////////////////////////////////////////////////////////////////////////////////////// + // SOC红外灯 + public static class STU_CFG_SOC_CONSTANT_RED_LAMP_ITEM extends Structure + { + public int emMode; // 工作模式,EM_DEV_SUP_LIGHT_MODE + public int nSensitivity; // 灵敏度,范围1-3,有光敏时使用,值越小灵敏度越高 + public int nBrightness; // 亮度 + public byte[] reserve = new byte[512]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emMode", "nSensitivity", "nBrightness", "reserve"}); + } + + public static class ByReference extends STU_CFG_SOC_CONSTANT_RED_LAMP_ITEM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_SOC_CONSTANT_RED_LAMP_ITEM implements Structure.ByValue + { + } + } + + // SOC红外灯配置参数 + public static class STU_CFG_SOC_CONSTANT_RED_LAMP_PARAM extends Structure + { + public int nRealCount; // 实际配置数量,此数量可通过能力获取 + // SOC红外灯列表 + public STU_CFG_SOC_CONSTANT_RED_LAMP_ITEM[] stSOCRedLamps = new STU_CFG_SOC_CONSTANT_RED_LAMP_ITEM[NetDefs.MAX_SOC_CONSTANT_RED_LAMP_NUM]; + public byte[] reserve = new byte[64]; // 保留字节 + + public STU_CFG_SOC_CONSTANT_RED_LAMP_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nRealCount", "stSOCRedLamps", "reserve"}); + } + + public static class ByReference extends STU_CFG_SOC_CONSTANT_RED_LAMP_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_SOC_CONSTANT_RED_LAMP_PARAM implements Structure.ByValue + { + } + } + + // SOC白光灯 + public static class STU_CFG_SOC_CONSTANT_LAMP_ITEM extends Structure + { + // 工作模式,EM_DEV_SUP_LIGHT_MODE + public int emMode; + // 亮度预设值,取值范围为0~100,无光敏时使用 + public int nPreValue; + // 常亮灯亮度,范围[0, 100] + public int nBrightness; + // 时段信息 + public STU_WEEK_TIME_SECTION_SCHEDULE stuWeekTimeSection; + // 保留字节 + public byte[] reserve = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emMode", "nPreValue", "nBrightness", "stuWeekTimeSection", "reserve"}); + } + + public static class ByReference extends STU_CFG_SOC_CONSTANT_LAMP_ITEM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_SOC_CONSTANT_LAMP_ITEM implements Structure.ByValue + { + } + } + + // SOC白光灯配置参数 + public static class STU_CFG_SOC_CONSTANT_LAMP_PARAM extends Structure + { + // 实际配置数量,此数量可通过能力获取 + public int nRealCount; + // SOC红外灯列表 + public STU_CFG_SOC_CONSTANT_LAMP_ITEM[] stSOCLamps = new STU_CFG_SOC_CONSTANT_LAMP_ITEM[NetDefs.MAX_SOC_CONSTANT_LAMP_NUM]; + // 保留字节 + public byte[] reserve = new byte[64]; + + public STU_CFG_SOC_CONSTANT_LAMP_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nRealCount", "stSOCLamps", "reserve"}); + } + + public static class ByReference extends STU_CFG_SOC_CONSTANT_LAMP_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_SOC_CONSTANT_LAMP_PARAM implements Structure.ByValue + { + } + } + + // 爆闪灯 + public static class STU_CFG_TRAFFIC_FLASH_LAMP_ITEM extends Structure + { + public int emMode; // 工作模式,EM_DEV_SUP_LIGHT_MODE + public int emPole; // 触发模式,EM_TRAFFIC_FLASH_LAMP_MODE + public int nThreshold; // 常亮灯亮度,范围[0, 100] + + public int nRealTimeCount; // 实际爆闪灯时长数量,不超过 MAX_TRAFFIC_FLASH_LIGHT_TIME_NUM + // 自定义爆闪灯时长,范围0-5000 us + public int[] nTimes = new int[NetDefs.MAX_TRAFFIC_FLASH_LAMP_TIME_NUM]; + + public int nDelayTime; // 延时闪光时间,单位us,负数表示提前闪光 + + public int nRealPortCount; // 实际爆闪灯端口号数量,不超过 MAX_FLASH_LIGHT_PORT_NUM + // 端口号,灯组内可能包含多个灯,端口号从1开始,同一端口号与频闪灯互斥 + public int[] nPorts = new int[NetDefs.MAX_FLASH_LAMP_PORT_NUM]; + + public byte[] reserve = new byte[512]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emMode", "emPole", "nThreshold", + "nRealTimeCount", "nTimes", "nDelayTime", "nRealPortCount", "nPorts", "reserve"}); + } + + public static class ByReference extends STU_CFG_TRAFFIC_FLASH_LAMP_ITEM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_TRAFFIC_FLASH_LAMP_ITEM implements Structure.ByValue + { + } + } + + // 爆闪灯配置参数 + public static class STU_CFG_TRAFFIC_FLASH_LAMP_PARAM extends Structure + { + public int nRealCount; // 实际配置数量,此数量可通过能力获取 + // 爆闪灯列表 + public STU_CFG_TRAFFIC_FLASH_LAMP_ITEM[] stFlashLamps = new STU_CFG_TRAFFIC_FLASH_LAMP_ITEM[NetDefs.MAX_TRAFFIC_FLASH_LAMP_NUM]; + public byte[] reserve = new byte[64]; // 保留字节 + + public STU_CFG_TRAFFIC_FLASH_LAMP_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nRealCount", "stFlashLamps", "reserve"}); + } + + public static class ByReference extends STU_CFG_TRAFFIC_FLASH_LAMP_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_TRAFFIC_FLASH_LAMP_PARAM implements Structure.ByValue + { + } + } + + // 频闪灯 + public static class STU_CFG_TRAFFIC_STROBOSCOPIC_LAMP_ITEM extends Structure + { + public int emMode; // 工作模式,EM_DEV_SUP_LIGHT_MODE + public int nThreshold; // 常亮灯亮度,范围[0, 100] + public int nDelayTime; // 延时闪光时间,单位us,负数表示提前闪光 + public int nTime; // 脉宽,范围0-5000 us + public int nDutyCycle; // 占空比,范围0~100 + public int nFrequency; // 工作频率,单位HZ,譬如50HZ,100HZ + public int nMultiFrequency; // 倍频,范围0~10 + public int nRealPortCount; // 实际爆闪灯端口号数量,不超过 MAX_FLASH_LIGHT_PORT_NUM + public int[] nPorts = new int[NetDefs.MAX_FLASH_LAMP_PORT_NUM]; // 端口号,灯组内可能包含多个灯,端口号从1开始,同一端口号与爆闪灯互斥 + public byte[] reserve = new byte[512]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emMode", "emPole", "nThreshold", + "nRealTimeCount", "nTimes", "nDelayTime", "nRealPortCount", "nPorts", "reserve"}); + } + + public static class ByReference extends STU_CFG_TRAFFIC_STROBOSCOPIC_LAMP_ITEM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_TRAFFIC_STROBOSCOPIC_LAMP_ITEM implements Structure.ByValue + { + } + } + + // 频闪灯配置参数 + public static class STU_CFG_TRAFFIC_STROBOSCOPIC_LAMP_PARAM extends Structure + { + public int nRealCount; // 实际配置数量,此数量可通过能力获取 + // 频闪灯列表 + public STU_CFG_TRAFFIC_STROBOSCOPIC_LAMP_ITEM[] stStrobLamps = new STU_CFG_TRAFFIC_STROBOSCOPIC_LAMP_ITEM[NetDefs.MAX_TRAFFIC_STROBOSCOPIC_LAMP_NUM]; + public byte[] reserve = new byte[64]; // 保留字节 + + public STU_CFG_TRAFFIC_STROBOSCOPIC_LAMP_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nRealCount", "stStrobLamps", "reserve"}); + } + + public static class ByReference extends STU_CFG_TRAFFIC_STROBOSCOPIC_LAMP_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_TRAFFIC_STROBOSCOPIC_LAMP_PARAM implements Structure.ByValue + { + } + } + + // GB28181 配置参数 + public static class STU_CFG_GB28181_PARAM extends Structure + { + public int bEnable; // 28181 使能 + public int uAlarmInChannelNum; // 报警输入通道数 + public byte[] cAlarmInId = new byte[32]; // 报警输入通道编号 + public int uChannelNum; // 通道总数 + public byte[] cChannelId = new byte[32]; // 通道编号 + public byte[] cCivilCode = new byte[16]; // 行政区识别码 + public byte[] cUserName = new byte[32]; // 用户名,即设备id + public byte[] cPassword = new byte[32]; // 注册密码 + public int uKeepAliveInterval; // 心跳时间间隔 + public int uLocalSipPort; // 本地sip端口号 + public int uMaxTimeoutCount; // 最大心跳超时时间 + public byte[] cSipDomain = new byte[32]; // 域名 + public byte[] cSipServerId = new byte[32]; // SIP 服务器 ID + public byte[] cSipServerIP = new byte[64]; // SIP 服务器 IP + public int uSipServerPort; // SIP 服务器端口 + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "uAlarmInChannelNum", "cAlarmInId", + "uChannelNum", "cChannelId", "cCivilCode", "cUserName", "cPassword", + "uKeepAliveInterval", "uLocalSipPort", "uMaxTimeoutCount", "cSipDomain", + "cSipServerId", "cSipServerIP", "uSipServerPort", "reserved"}); + } + + public static class ByReference extends STU_CFG_GB28181_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_GB28181_PARAM implements Structure.ByValue + { + } + } + + // ONVIF 配置 + public static class STU_CFG_ONVIF extends Structure + { + public int bEnable; // ONVIF 使能 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable"}); + } + + public static class ByReference extends STU_CFG_ONVIF implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ONVIF implements Structure.ByValue + { + } + } + + // 我司云服务 + public static class STU_CFG_CLOUD_SERVICE extends Structure + { + public int bEnable; // 使能 + public int uPort; // 服务端口 + public byte[] szAddress = new byte[128]; // 服务地址、域名 + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "uPort", "szAddress", "reserved"}); + } + + public static class ByReference extends STU_CFG_CLOUD_SERVICE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_CLOUD_SERVICE implements Structure.ByValue + { + } + } + + // ZK服务配置项 + public static class STU_CFG_ZK_SERVICE_ITEM extends Structure + { + public int bEnable; // 是否使能 + public int uPort; // 服务端口号 + public byte[] szIpAddr = new byte[64]; // 服务 IP 地址 + public byte[] szName = new byte[64]; // 服务名称 + public byte[] reserved = new byte[128]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "uPort", "szIpAddr", "szName", "reserved"}); + } + + public static class ByReference extends STU_CFG_ZK_SERVICE_ITEM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ZK_SERVICE_ITEM implements Structure.ByValue + { + } + } + + // ZK服务配置信息 + public static class STU_CFG_ZK_SERVICE extends Structure + { + public int uRealCount; // 实际配置个数 + // 服务配置项数组,注意在外部释放 + public STU_CFG_ZK_SERVICE_ITEM[] pstItems = new STU_CFG_ZK_SERVICE_ITEM[NetDefs.MAX_CFG_SERVICE_ITEM_NUM]; + + public STU_CFG_ZK_SERVICE() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"uRealCount", "pstItems"}); + } + + public static class ByReference extends STU_CFG_ZK_SERVICE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ZK_SERVICE implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 羚羊云平台 + public static class STU_CFG_LY_CLOUD_PARAM extends Structure + { + public int bEnable; // 使能控制,0:禁用,1:启用 + public byte[] szSignature = new byte[64]; // 签名验证码,由羚羊云提供,与设备序列号绑定 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szSignature", "reserved"}); + } + + public static class ByReference extends STU_CFG_LY_CLOUD_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_LY_CLOUD_PARAM implements Structure.ByValue + { + } + } + + // GAT1400服务器信息 + public static class STU_CFG_GAT1400_SERVICE extends Structure + { + public int emPlatformType; // 当前连接的平台类型,EM_GAT1400_SERVICE_CONN_TYPE + public byte[] szServerIP = new byte[16]; // 服务器IP + public int nServerPort; // 服务器端口 + public byte[] szDeviceID = new byte[20]; // 设备编号 + public byte[] szVIID = new byte[20]; // 视图库编号 + public byte[] szUserName = new byte[32]; // 登陆服务器的用户名 + public byte[] szPassword = new byte[32]; // 登陆服务器的密码 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emPlatformType", "szServerIP", "nServerPort", + "szDeviceID", "szVIID", "szUserName", "szPassword", "reserved"}); + } + + public static class ByReference extends STU_CFG_GAT1400_SERVICE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_GAT1400_SERVICE implements Structure.ByValue + { + } + } + + // GAT1400 + public static class STU_CFG_GAT1400_PARAM extends Structure + { + public int bEnable; // 使能控制,0:禁用,1:启用 + public int nKeepAliveInterval; // 签名验证码,由羚羊云提供,与设备序列号绑定 + public int nServiceCount; // 服务器信息实际数目 + // 服务器信息 + public STU_CFG_GAT1400_SERVICE[] stServiceAry = new STU_CFG_GAT1400_SERVICE[NetDefs.MAX_GAT1400_SERVICE_NUM]; + public byte[] reserved = new byte[64]; // 保留位 + + public STU_CFG_GAT1400_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "nKeepAliveInterval", "nServiceCount", + "stServiceAry", "reserved"}); + } + + public static class ByReference extends STU_CFG_GAT1400_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_GAT1400_PARAM implements Structure.ByValue + { + } + } + + // YN平台注册机信息 + public static class STU_PLAT_YN_REGISTER_INFO extends Structure + { + public byte[] szUrlAddress = new byte[128]; // 注册地址 + public byte[] szUrlToken = new byte[128]; // 地址Token + public byte[] szUserID = new byte[64]; // 注册ID + public byte[] szUserKey = new byte[64]; // 注册密钥 + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szUrlAddress", "szUrlToken", "szUserID", + "szUserKey", "reserved"}); + } + + public static class ByReference extends STU_PLAT_YN_REGISTER_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_PLAT_YN_REGISTER_INFO implements Structure.ByValue + { + } + } + + // YN平台人脸认证信息 + public static class STU_PLAT_YN_FACE_AUTH_INFO extends Structure + { + public byte[] szUrlAddress = new byte[128]; // 认证地址 + public byte[] szUrlToken = new byte[128]; // 地址Token + public byte[] szFaceID = new byte[64]; // 认证ID + public byte[] szFaceKey = new byte[64]; // 认证秘钥 + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szUrlAddress", "szUrlToken", "szFaceID", + "szFaceKey", "reserved"}); + } + + public static class ByReference extends STU_PLAT_YN_FACE_AUTH_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_PLAT_YN_FACE_AUTH_INFO implements Structure.ByValue + { + } + } + + // YN平台继电器操作指令 + public static class STU_PLAT_YN_RELAY_ORDER extends Structure + { + public byte[] szOpen = new byte[32]; // iPv4地址 + public byte[] szClose = new byte[32]; // 端口 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szOpen", "szClose", "reserved"}); + } + + public static class ByReference extends STU_PLAT_YN_RELAY_ORDER implements Structure.ByReference + { + } + + public static class ByValue extends STU_PLAT_YN_RELAY_ORDER implements Structure.ByValue + { + } + } + + // YN平台继电器参数 + public static class STU_PLAT_YN_RELAY_INFO extends Structure + { + public byte[] szIP = new byte[128]; // iPv4地址 + public int nPort; // 端口 + public int nRelayCount; // 继电器个数 + // 继电器信息 + public STU_PLAT_YN_RELAY_ORDER[] stRelayOrder = new STU_PLAT_YN_RELAY_ORDER[NetDefs.MAX_PLAT_YN_RELAY_NUM]; + public byte[] reserved = new byte[256]; // 保留位 + + public STU_PLAT_YN_RELAY_INFO() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"szIP", "nPort", "nRelayCount", "stRelayOrder", "reserved"}); + } + + public static class ByReference extends STU_PLAT_YN_RELAY_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_PLAT_YN_RELAY_INFO implements Structure.ByValue + { + } + } + + // YN平台配置 + public static class STU_CFG_PLATFORM_YN_PARAM extends Structure + { + public int bEnable; // 使能控制,0:禁用,1:启用 + public int nConfidenceThreshold; // 相似度阈值,范围0-100 + public STU_PLAT_YN_REGISTER_INFO stRegisterInfo; // 注册机信息 + public STU_PLAT_YN_FACE_AUTH_INFO stFaceAuthInfo; // 人脸认证信息 + public STU_PLAT_YN_RELAY_INFO stRelayInfo; // 继电器参数 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "nConfidenceThreshold", "stRegisterInfo", + "stFaceAuthInfo", "stRelayInfo", "reserved"}); + } + + public static class ByReference extends STU_CFG_PLATFORM_YN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_PLATFORM_YN_PARAM implements Structure.ByValue + { + } + } + + // SPPP + public static class STU_CFG_SPPP_PARAM extends Structure + { + public int bEnable; // 使能控制,0:禁用,1:启用 + public byte[] szDomainName = new byte[128]; // 服务器域名 + public byte[] szParkId = new byte[128]; // 停车场 ID + public byte[] szCameraId = new byte[128]; // 抓拍相机 ID + public int bNeedWholePic; // 是否上传抓拍全景大图,true – 上传大图,false – 不上传大图 + public int bNeedProperty; // 是否上传属性信息,true – 上传,false – 不上传 + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szDomainName", "szParkId", + "szCameraId", "bNeedWholePic", "bNeedProperty", "reserved"}); + } + + public static class ByReference extends STU_CFG_SPPP_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_SPPP_PARAM implements Structure.ByValue + { + } + } + + // FRPPP + public static class STU_CFG_FRPPP_PARAM extends Structure + { + public int bEnable; // 使能控制,0:禁用,1:启用 + public byte[] szBaseAddr = new byte[256]; // 基地址,API所在IP或域名和基础上下文路径 + public int nHeartbeatInterval; // 心跳间隔,单位秒 + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szBaseAddr", "nHeartbeatInterval", "reserved"}); + } + + public static class ByReference extends STU_CFG_FRPPP_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_FRPPP_PARAM implements Structure.ByValue + { + } + } + + // BFGAS + public static class STU_CFG_BFGAS_PARAM extends Structure + { + public int bEnable; // 使能控制,0:禁用,1:启用 + public byte[] szDomainName = new byte[128]; // 服务器域名 + public byte[] szToken = new byte[32]; // 标识一个抓拍机型号,token值和activeKey保持一致,抓拍机生产时此字段必填并固定不变 + public byte[] szActiveKey = new byte[32]; // 激活字符串,抓拍机配置用于人脸采集平台鉴权,例如:I3GZ-KKQE-ZJNR-R0M1 + // 抓拍机使用者在接入平台中申请后填写至抓拍机控制台 + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szDomainName", "szToken", + "szActiveKey", "reserved"}); + } + + public static class ByReference extends STU_CFG_BFGAS_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_BFGAS_PARAM implements Structure.ByValue + { + } + } + + // Tuya + public static class STU_CFG_TUYA_PARAM extends Structure + { + public int bEnable; // 使能控制,0:禁用,1:启用 + public byte[] szPID = new byte[64]; // 涂鸦平台产品ID + public byte[] szUUID = new byte[64]; // 每个设备唯一的标识,一机一号。开发、生产时请向涂鸦申请 + public byte[] szAuthKey = new byte[64]; // 鉴权码,一机一码,与UUID配对。开发、生产时请向涂鸦申请 + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szPID", "szUUID", + "szAuthKey", "reserved"}); + } + + public static class ByReference extends STU_CFG_TUYA_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_TUYA_PARAM implements Structure.ByValue + { + } + } + + // Aliyun + public static class STU_CFG_ALIYUN_PARAM extends Structure + { + public int bEnable; // 使能控制,0:禁用,1:启用 + public byte[] szProductKey = new byte[20]; // 产品码 + public byte[] szDeviceName = new byte[32]; // 设备名 + public byte[] szDeviceSecret = new byte[64]; // 设备密码 + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szProductKey", "szDeviceName", + "szDeviceSecret", "reserved"}); + } + + public static class ByReference extends STU_CFG_ALIYUN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ALIYUN_PARAM implements Structure.ByValue + { + } + } + + // XMPPP + public static class STU_CFG_XMPPP_PARAM extends Structure + { + public int bEnable; // 使能控制,0:禁用,1:启用 + public byte[] szDomainName = new byte[128]; // 服务器域名 + public byte[] szParkId = new byte[128]; // 停车场 ID + public byte[] szCameraId = new byte[128]; // 抓拍相机 ID + public int bNeedWholePic; // 是否上传抓拍全景大图,true – 上传大图,false – 不上传大图 + public int bNeedProperty; // 是否上传属性信息,true – 上传,false – 不上传 + public byte[] szKeepaliveUrl = new byte[128]; // 保活的url地址 + public int nKeepAliveInterval; // 保活周期,单位分钟,可选值为[2,5,10,15,30] + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szDomainName", "szParkId", + "szCameraId", "bNeedWholePic", "bNeedProperty", "szKeepaliveUrl", + "nKeepAliveInterval", "reserved"}); + } + + public static class ByReference extends STU_CFG_XMPPP_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_XMPPP_PARAM implements Structure.ByValue + { + } + } + + // 中威-900W鸣笛 + public static class STU_CFG_ZW_WHISTLE extends Structure + { + public int bEnable; // 使能控制,0:禁用,1:启用 + public byte[] szHost = new byte[256]; // 云平台服务器地址 + public int nPort; // 云平台端口 + public int nKeepAliveInterval; // 与云平台的心跳周期, 单位秒 + public int nListenPort; // 监听端口 + public byte[] szRtspUrl = new byte[265]; // 取流的rtsp的url + public byte[] szRtspUsername = new byte[32]; // Rtsp的用户名 + public byte[] szRtspPassword = new byte[32]; // Rtsp的登录密码 + + // 本身场景下标定区域信息, 8192坐标系, 固定为 MAX_ZW_WHISTLE_AREA_CALIB_PTS_NUM 个点组成 + public STU_POINT[] stSelfAreaCalibPts = new STU_POINT[NetDefs.MAX_ZW_WHISTLE_CALIB_AREA_PTS_NUM]; + // 鸣笛系统场景下标定区域信息, 8192坐标系, 固定为 MAX_ZW_WHISTLE_AREA_CALIB_PTS_NUM 个点组成 + public STU_POINT[] stWhistleAreaCalibPts = new STU_POINT[NetDefs.MAX_ZW_WHISTLE_CALIB_AREA_PTS_NUM]; + + public int nFontColor; // 字体颜色, 0-默认色, 1 - 红, 2 - 绿, 3 - 黄 + public int nBrightness; // 亮度,取值范围[0, 15],值越大就越亮 + + public byte[] reserved = new byte[512]; // 保留位 + + public STU_CFG_ZW_WHISTLE() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szHost", "nPort", + "nKeepAliveInterval", "nListenPort", "szRtspUrl", "szRtspUsername", "szRtspPassword", + "stSelfAreaCalibPts", "stWhistleAreaCalibPts", "nFontColor", "nBrightness", "reserved"}); + } + + public static class ByReference extends STU_CFG_ZW_WHISTLE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ZW_WHISTLE implements Structure.ByValue + { + } + } + + // 磊盛平台 + public static class STU_CFG_LS_PLATFORM extends Structure + { + public int bEnable; // 使能控制,0:禁用,1:启用 + public int nHttpPort; // http端口 默认8090 + public byte[] szPassword = new byte[32]; // 内部使用字段 + public byte[] szIdentifyCbAddr = new byte[256]; // 识别回调地址 + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "nHttpPort", "szPassword", + "szIdentifyCbAddr", "reserved"}); + } + + public static class ByReference extends STU_CFG_LS_PLATFORM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_LS_PLATFORM implements Structure.ByValue + { + } + } + + // 普天视智慧工地IPC接入 + public static class STU_CFG_MQTT_PLATFORM extends Structure + { + public int bEnable; // 使能控制,0:禁用,1:启用 + public int nFlag; // 进出状态 1:进门 2:出门 + public byte[] szIdNumber = new byte[128]; // 工地标识 + public byte[] szMqttIP = new byte[64]; // Mqtt服务器地址 + public int nMqttPort; // Mqtt服务器端口 + public byte[] szMqttUsername = new byte[32]; // Mqtt用户名 + public byte[] szMqttPassword = new byte[32]; // Mqtt密码 + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "nFlag", "szMqttIP", + "nMqttPort", "szMqttUsername", "szMqttPassword", "reserved"}); + } + + public static class ByReference extends STU_CFG_MQTT_PLATFORM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_MQTT_PLATFORM implements Structure.ByValue + { + } + } + + // 楼层信息 + public static class STU_FLOOR_INFO extends Structure + { + public byte[] szFloorAlias = new byte[16]; // 楼层别名 + public byte[] reserved = new byte[128]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szFloorAlias", "reserved"}); + } + + public static class ByReference extends STU_FLOOR_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_FLOOR_INFO implements Structure.ByValue + { + } + } + + // 跃天梯控楼显监控 + public static class STU_CFG_YT_ELEVATOR extends Structure + { + public int bEnable; // 使能控制,0:禁用,1:启用 + public byte[] szServerIP = new byte[64]; // 服务器Ip + public int nServerPort; // 服务器端口 + public int nCurrentFloors; // 当前楼层,为FloorAlias的数组下标,web需显示对于的别名 + public int nKeepAlive; // 保活周期 单位s + public int nFloorsNumber; // 实际楼层数 + public STU_FLOOR_INFO[] stFloorInfos = new STU_FLOOR_INFO[NetDefs.MAX_PLAT_YT_ELEVATOR_FLOOR_NUM]; // 楼层信息 + public int bAlarmEnable; // 电梯故障告警推送使能, 0:禁用, 1:启用 + public int nElevatorSpeed; // 电梯每层之间最快运行时间 单位s + public int nElevatorTimerDay; // 白天超时停运时间 单位min + public int nElevatorTimerNight; // 晚上超时停运时间 单位min + public byte[] szKey = new byte[64]; // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx (8-4-4-4-12) + // 其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字,其中a-f支持大写。可以省略”-” + public STU_TIME szAllowUseStartTime; // 电梯停运时间设置, 白天开始时间, 目前只有 时分 有效 + public STU_TIME szAllowUseEndTime; // 电梯停运时间设置, 白天开始结束, 目前只有 时分 有效 + public int nStopTime; // 默认停运时间 单位s + public byte[] reserved = new byte[512]; // 保留位 + + public STU_CFG_YT_ELEVATOR() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szServerIP", "nServerPort", "nCurrentFloors", + "nKeepAlive", "nFloorsNumber", "stFloorInfos", "bAlarmEnable", "nElevatorSpeed", + "nElevatorTimerDay", "nElevatorTimerNight", "szKey", "szAllowUseStartTime", + "szAllowUseEndTime", "nStopTime", "reserved"}); + } + + public static class ByReference extends STU_CFG_YT_ELEVATOR implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_YT_ELEVATOR implements Structure.ByValue + { + } + } + + // 泥蜂平台 + public static class STU_CFG_NI_FENG extends Structure + { + public int bEnable; // 使能控制,0:禁用,1:启用 + public byte[] szServerIP = new byte[64]; // 服务器Ip + public int nServerPort; // 服务器端口 + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szServerIP", "nServerPort", "reserved"}); + } + + public static class ByReference extends STU_CFG_NI_FENG implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_NI_FENG implements Structure.ByValue + { + } + } + + // KS Active + public static class STU_CFG_KS_ACTIVE extends Structure + { + public int bEnable; // 使能控制,0:禁用,1:启用 + public byte[] szServerIP = new byte[64]; // 服务器Ip + public int nServerPort; // 服务器端口 + public byte[] szAppID = new byte[32]; // 服务器分配的Id号相当于账号 + public byte[] szAppKey = new byte[32]; // 服务器分配的Key相当于密码 + public byte[] szDeviceSN = new byte[32]; // 设备编号全局唯一,所有设备唯一(web只显示不能修改) + public byte[] szDeviceName = new byte[128]; // 设备名称 + public byte[] szInfo = new byte[768]; // 备注 + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szServerIP", "nServerPort", + "szAppID", "szAppKey", "szDeviceSN", "szDeviceName", "szInfo", "reserved"}); + } + + public static class ByReference extends STU_CFG_KS_ACTIVE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_KS_ACTIVE implements Structure.ByValue + { + } + } + + // 鑫博平台 + public static class STU_CFG_GEN_PLATFORM extends Structure + { + public byte[] szUrl = new byte[64]; // 服务器Ip + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szUrl", "reserved"}); + } + + public static class ByReference extends STU_CFG_GEN_PLATFORM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_GEN_PLATFORM implements Structure.ByValue + { + } + } + + // 高锦采集器 + public static class STU_CFG_GOGEN_COLLECTOR extends Structure + { + public int bEnable; // 使能控制,0:禁用,1:启用 + public byte[] szHost = new byte[64]; // 服务器Ip + public int nHeartbeatInterval; // 心跳间隔,单位秒 + public int nReconnectInterval; // 重连间隔,单位秒 + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szHost", "nHeartbeatInterval", "nReconnectInterval", "reserved"}); + } + + public static class ByReference extends STU_CFG_GOGEN_COLLECTOR implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_GOGEN_COLLECTOR implements Structure.ByValue + { + } + } + + // 梯控配置 + public static class STU_CFG_ELEVATOR_CONTROL extends Structure + { + public int nControlMode; // 控制方式,0 - 不控制;1 - RS485 + public byte[] szPublicFloors = new byte[128]; // 公共楼层,用","区分楼层,不可带空格 + public int nDurationInterval; // 持续时间(秒) + public byte[] reserved = new byte[508]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nControlMode", "szPublicFloors", "nDurationInterval", "reserved"}); + } + + public static class ByReference extends STU_CFG_ELEVATOR_CONTROL implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ELEVATOR_CONTROL implements Structure.ByValue + { + } + } + + //////////////////////////////////////////////////////////////////////////////////////////////////// + // 主动注册配置 + public static class STU_CFG_AUTO_REGISTER_PARAM extends Structure + { + public int bEnable; // 使能控制,0:禁用,1:启用 + public byte[] szServerAddress = new byte[64]; // 服务器地址 + public int nPort; // 服务器端口号 + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szServerAddress", "nPort", "reserved"}); + } + + public static class ByReference extends STU_CFG_AUTO_REGISTER_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_AUTO_REGISTER_PARAM implements Structure.ByValue + { + } + } + + // Websocket主动注册配置 + public static class STU_CFG_WS_REGISTER_PARAM extends Structure + { + public int bEnable; // 使能控制,0:禁用,1:启用 + public byte[] szServerURL = new byte[256]; // 服务器地址 + public byte[] szPushPicURL = new byte[256]; // 推图地址 + public byte[] szSercKey = new byte[128]; // 秘钥 + public int nHeartbeatInterval; // websocket的ping-pong心跳的间隔,单位秒 + public int nHeartbeatType; // ping-pong心跳的实现方式 + // 0-使用websocket协议层的ping-pong机制 + // 1-使用明文(text)的ping-pong + public int nReconnectInterval; // websocket的重连间隔,单位秒 + public int nPushMessage; // 图片推送项,二进制位表示 + // 二进制第一位表示推送通行成功,第二位表示推送通行失败 + // 组合方式:0-不推送;1-推送。 + public byte[] reserved = new byte[1020]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szServerURL", "szPushPicURL", + "szSercKey", "nHeartbeatInterval", "nHeartbeatType", "nReconnectInterval", "nPushMessage", "reserved"}); + } + + public static class ByReference extends STU_CFG_WS_REGISTER_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_WS_REGISTER_PARAM implements Structure.ByValue + { + } + } + + // HTTP反向注册配置 + public static class STU_CFG_HTTP_REGISTER_PARAM extends Structure + { + public int bEnable; // 使能控制,0:禁用,1:启用 + public byte[] szMessageURL = new byte[256]; // 信令URL地址 + public byte[] szPushPictureURL = new byte[256]; // 推图URL地址 + public int nHeartbeatInterval; // 心跳间隔,单位秒 + public int nPicAckType; // 图片断网续传是否使用确认标记 + // 0-默认,使用返回的200ok判断 + // 1-通过返回的协议字段判断 + public int bMerger; // 是否合并发送内容,默认为false,不合并,开启时只发送事件信息json,json中带有字段包含图片信息 + public int nPushMessage; // 图片推送项,二进制位表示 + // 二进制第一位表示推送通行成功,第二位表示推送通行失败 + // 组合方式:0-不推送;1-推送。 + public byte[] reserved = new byte[1020]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szMessageURL", "szPushPictureURL", + "nHeartbeatInterval", "nPicAckType", "bMerger", "nPushMessage", "reserved"}); + } + + public static class ByReference extends STU_CFG_HTTP_REGISTER_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_HTTP_REGISTER_PARAM implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 获取视频分析通道数目 + public static class STU_CFG_GET_ANALYSE_CAHNNELS extends Structure + { + public int nChannelNumber; // 通道数 + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannelNumber", "reserved"}); + } + + public static class ByReference extends STU_CFG_GET_ANALYSE_CAHNNELS implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_GET_ANALYSE_CAHNNELS implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + // PTZ 线性扫描使能信息 + public static class STU_CFG_PTZ_AUTO_SCAN_ENABLE_INFO extends Structure + { + // 按bit,低位到高位分别表示32条线路,0 - 未使能,1 - 使能 + public int uAutoScanEnableMask; + public byte[] reserved = new byte[32]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uAutoScanEnableMask", "reserved"}); + } + + public static class ByReference extends STU_CFG_PTZ_AUTO_SCAN_ENABLE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_PTZ_AUTO_SCAN_ENABLE_INFO implements Structure.ByValue + { + } + } + + // PTZ 巡迹使能信息 + public static class STU_CFG_PTZ_AUTO_PATTERN_ENABLE_INFO extends Structure + { + // 按bit,低位到高位分别表示32条线路,0 - 未使能,1 - 使能 + public int uAutoPatternEnableMask; + public byte[] reserved = new byte[32]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"uAutoPatternEnableMask", "reserved"}); + } + + public static class ByReference extends STU_CFG_PTZ_AUTO_PATTERN_ENABLE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_PTZ_AUTO_PATTERN_ENABLE_INFO implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 自定义车道参数 + public static class STU_TRAFFIC_CUSTOM_LANE_INFO extends Structure + { + public int nCustomLaneNo; // 车道号 + public int emDirection; // 方向,EM_TRAFFIC_LANE_DIRECTION + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nCustomLaneNo", "emDirection", "reserved"}); + } + + public static class ByReference extends STU_TRAFFIC_CUSTOM_LANE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_TRAFFIC_CUSTOM_LANE_INFO implements Structure.ByValue + { + } + } + + // 交通自定义的车道参数 + public static class STU_CFG_TRAFFIC_CUSTOM_LANE extends Structure + { + // 实际车道数量,最大不超过MAX_TRAFFIC_CUSTOM_LANE_NUM + public int nRealLaneCount; + // 车道信息 + public STU_TRAFFIC_CUSTOM_LANE_INFO[] stTrafficCustomLanes = new STU_TRAFFIC_CUSTOM_LANE_INFO[NetDefs.MAX_TRAFFIC_LANE_NUM]; + + public STU_CFG_TRAFFIC_CUSTOM_LANE() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nRealLaneCount", "stTrafficCustomLanes"}); + } + + public static class ByReference extends STU_CFG_TRAFFIC_CUSTOM_LANE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_TRAFFIC_CUSTOM_LANE implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 限速 + public static class STU_SPEED_LIMIT extends Structure + { + public int nLowLimit; // 最低限速,km/h + public int nHighLimit; // 最高限速,km/h + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nLowLimit", "nHighLimit"}); + } + + public static class ByReference extends STU_SPEED_LIMIT implements Structure.ByReference + { + } + + public static class ByValue extends STU_SPEED_LIMIT implements Structure.ByValue + { + } + } + + // 分析车道参数 + public static class STU_TRAFFIC_ANALYSE_LANE_INFO extends Structure + { + public int bDiffCar; // 是否区分大小车 + // FALSE,只需取stSpeedLimits下标为0的内容,表示小车限速 + // TRUE,stSpeedLimits下标0表示小车限速,下标1表示大车限速 + public STU_SPEED_LIMIT[] stSpeedLimits = new STU_SPEED_LIMIT[2]; // 大小车限速 + public byte[] reserved = new byte[256]; // 保留字节 + + public STU_TRAFFIC_ANALYSE_LANE_INFO() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"bDiffCar", "stSpeedLimits", "reserved"}); + } + + public static class ByReference extends STU_TRAFFIC_ANALYSE_LANE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_TRAFFIC_ANALYSE_LANE_INFO implements Structure.ByValue + { + } + } + + // 交通分析车道参数 + public static class STU_CFG_TRAFFIC_ANALYSE_LANE extends Structure + { + // 实际车道数量,最大不超过MAX_TRAFFIC_CUSTOM_LANE_NUM + public int nRealLaneCount; + // 车道信息 + public STU_TRAFFIC_ANALYSE_LANE_INFO[] stTrafficAnalyseLanes = new STU_TRAFFIC_ANALYSE_LANE_INFO[NetDefs.MAX_TRAFFIC_LANE_NUM]; + + public STU_CFG_TRAFFIC_ANALYSE_LANE() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nRealLaneCount", "stTrafficAnalyseLanes"}); + } + + public static class ByReference extends STU_CFG_TRAFFIC_ANALYSE_LANE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_TRAFFIC_ANALYSE_LANE implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 交通黑白名单抓拍使能 + public static class STU_CFG_TRAFFIC_BLACKWHITELIST_ENABLE extends Structure + { + public int bBlackListEnable; // 黑名单使能 + public int bWhiteListEnable; // 白名单使能 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bBlackListEnable", "bWhiteListEnable"}); + } + + public static class ByReference extends STU_CFG_TRAFFIC_BLACKWHITELIST_ENABLE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_TRAFFIC_BLACKWHITELIST_ENABLE implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 通用配置 + public static class STU_EVENT_TRAFFIC_COMMON_CFG extends Structure + { + public byte[] szCode = new byte[64]; // 违法代码 + public byte[] szName = new byte[64]; // 违法类型名称 + public byte[] reversed = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szCode", "szName", "reversed"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_COMMON_CFG implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_COMMON_CFG implements Structure.ByValue + { + } + } + + // 超速区间 + public static class STU_OVERSPEED_SECTION_CFG extends Structure + { + public int nOverSpeedPercentageLowLimit; // 超速百分比区间,最低值, + public int nOverSpeedPercentageHighLimit; // 超速百分比区间,最高值,-1表示无穷大 + public byte[] szCode = new byte[64]; // 违法代码 + public byte[] szName = new byte[64]; // 违法类型名称 + public byte[] reversed = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nOverSpeedPercentageLowLimit", "nOverSpeedPercentageHighLimit", + "szCode", "szName", "reversed"}); + } + + public static class ByReference extends STU_OVERSPEED_SECTION_CFG implements Structure.ByReference + { + } + + public static class ByValue extends STU_OVERSPEED_SECTION_CFG implements Structure.ByValue + { + } + } + + // 超速配置 + public static class STU_EVENT_TRAFFIC_OVERSPEED_CFG extends Structure + { + // 实际的区间个数,最大不超过MAX_TRAFFIC_OVERSPEED_SECTION_NUM + public int nRealSectionCount; + // 不同的超速区间对应不同的配置 + public STU_OVERSPEED_SECTION_CFG[] stOverSpeedSections = new STU_OVERSPEED_SECTION_CFG[NetDefs.MAX_TRAFFIC_OVERSPEED_SECTION_NUM]; + + public STU_EVENT_TRAFFIC_OVERSPEED_CFG() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nRealSectionCount", "stOverSpeedSections"}); + } + + public static class ByReference extends STU_EVENT_TRAFFIC_OVERSPEED_CFG implements Structure.ByReference + { + } + + public static class ByValue extends STU_EVENT_TRAFFIC_OVERSPEED_CFG implements Structure.ByValue + { + } + } + + // 交通违法代码 + public static class STU_CFG_TRAFFIC_VIOLATION_CODE extends Structure + { + // in(获取/设置配置时):指定事件类型,EM_EVENT_SP_TYPE + public int emInEventType; + // in(设置配置时)/out(获取配置时):非超速事件,emInEventType不为EVENT_SP_TRAFFIC_OVER_SPEED时使用 + public STU_EVENT_TRAFFIC_COMMON_CFG stEventTrafficCommonCfg; + // in(设置配置时)/out(获取配置时):超速事件,emInEventType为EVENT_SP_TRAFFIC_OVER_SPEED时使用 + public STU_EVENT_TRAFFIC_OVERSPEED_CFG stEventTrafficOverSpeed; + // 保留字节 + public byte[] reserved = new byte[4096]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emInEventType", "stEventTrafficCommonCfg", "stEventTrafficOverSpeed", "reserved"}); + } + + public static class ByReference extends STU_CFG_TRAFFIC_VIOLATION_CODE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_TRAFFIC_VIOLATION_CODE implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 闪光灯闪光规则 + public static class STU_FLASH_LIGHT_SETTING extends Structure + { + public int nRealFlashNoCount; // 实际需要几个闪光灯,最大不超过MAX_TRAFFIC_FLASH_LIGHT_NUM + public int[] nFlashLightNo = new int[NetDefs.MAX_TRAFFIC_FLASH_LIGHT_NUM]; // 需要的闪光灯序号 + public byte[] reserved = new byte[64]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nRealFlashNoCount", "nFlashLightNo", "reserved"}); + } + + public static class ByReference extends STU_FLASH_LIGHT_SETTING implements Structure.ByReference + { + } + + public static class ByValue extends STU_FLASH_LIGHT_SETTING implements Structure.ByValue + { + } + } + + // 闪光灯违章配置 + public static class STU_FLASH_LIGHT_VIO_CFG extends Structure + { + // 违章名称 + public byte[] szVioName = new byte[64]; + // 实际白天的闪光灯抓拍张数,最大不超过nRealFlashDayCount + public int nRealFlashDayCapCount; + // 白天闪光灯配置 + public STU_FLASH_LIGHT_SETTING[] stFlashDayCapSettings = new STU_FLASH_LIGHT_SETTING[NetDefs.MAX_TRAFFIC_CAPTURE_NUM]; + // 实际夜晚的闪光灯抓拍张数,最大不超过nRealFlashDayCount + public int nRealFlashNightCapCount; + // 夜晚闪光灯配置 + public STU_FLASH_LIGHT_SETTING[] stFlashNightCapSettings = new STU_FLASH_LIGHT_SETTING[NetDefs.MAX_TRAFFIC_CAPTURE_NUM]; + // 保留字节 + public byte[] reserved = new byte[2048]; + + public STU_FLASH_LIGHT_VIO_CFG() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"szVioName", "nRealFlashDayCapCount", "stFlashDayCapSettings", + "nRealFlashNightCapCount", "stFlashNightCapSettings", "reserved"}); + } + + public static class ByReference extends STU_FLASH_LIGHT_VIO_CFG implements Structure.ByReference + { + } + + public static class ByValue extends STU_FLASH_LIGHT_VIO_CFG implements Structure.ByValue + { + } + } + + // 交通闪光灯 + public static class STU_CFG_TRAFFIC_FLASH_LIGHT extends Structure + { + // in(获取/设置配置时):规则类型,对应智能场景,EM_INTELLI_RULE_TYPE + public int emInRuleType; + // in(设置配置时)/out(获取配置时):实际车道数,最大不超过MAX_TRAFFIC_LANE_NUM + public int nRealLaneCount; + // in(设置配置时)/out(获取配置时):闪光灯配置 + public STU_FLASH_LIGHT_VIO_CFG[] stFlashLightViolationCfgs = new STU_FLASH_LIGHT_VIO_CFG[NetDefs.MAX_TRAFFIC_LANE_NUM]; + + public STU_CFG_TRAFFIC_FLASH_LIGHT() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"emInRuleType", "nRealLaneCount", "stFlashLightViolationCfgs"}); + } + + public static class ByReference extends STU_CFG_TRAFFIC_FLASH_LIGHT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_TRAFFIC_FLASH_LIGHT implements Structure.ByValue + { + } + } + + // 交通抓拍时间段规则 + public static class STU_TRAFFIC_SNAP_RULE_CFG extends Structure + { + // 正常时间段 + public STU_WEEK_TIME_SECTION_SCHEDULE stTimeSchedule = new STU_WEEK_TIME_SECTION_SCHEDULE(); + + // 假日时段使能,默认不使能 + public int bHolidayEnable; + // 假日时间段 + public STU_DAY_TIME_SECTION_SCHEDULE stHolidaySchedule = new STU_DAY_TIME_SECTION_SCHEDULE(); + + // 保留字节 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stTimeSchedule", "bHolidayEnable", "stHolidaySchedule", "reserved"}); + } + + public static class ByReference extends STU_TRAFFIC_SNAP_RULE_CFG implements Structure.ByReference + { + } + + public static class ByValue extends STU_TRAFFIC_SNAP_RULE_CFG implements Structure.ByValue + { + } + } + + // 交通抓拍时间段配置,可多次调用,每次只获取多车道的一种规则 + public static class STU_CFG_TRAFFIC_SNAP_TIME_SCHEDULE extends Structure + { + // 获取或者设置配置时,都需指定规则类型,只使用“交通事件检测场景”部分, EM_INTELLI_RULE_TYPE + public int emTrafficRuleType; + + // 0:全局,不区分车道,固定使用Lanes[0u] + // 1:区分车道,每个车道使用各自的Lanes + public int nMode; + + // 实际抓拍车道数 + public int nRealLaneCount; + // 抓拍车道规则数组配置,车道最多MAX_TRAFFIC_LANE_NUM个 + public STU_TRAFFIC_SNAP_RULE_CFG[] stTraffceSnapRuleCfgs = new STU_TRAFFIC_SNAP_RULE_CFG[NetDefs.MAX_TRAFFIC_LANE_NUM]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emTrafficRuleType", "nMode", "nRealLaneCount", "stTraffceSnapRuleCfgs"}); + } + + public static class ByReference extends STU_CFG_TRAFFIC_SNAP_TIME_SCHEDULE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_TRAFFIC_SNAP_TIME_SCHEDULE implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 识别推送安全边界配置 + public static class STU_CFG_RECOGNIZE_LIMIT extends Structure + { + public float[] fRoll = new float[2]; // 斜脸角度区间[-180,180] + public float[] fYaw = new float[2]; // 侧脸角度区间[-180,180] + public float[] fPitch = new float[2]; // 俯仰角度区间[-180,180] + public float fBlur; // 模糊度[0,1],越小越好,大于该值不推识别 + public float fLandMarkConfidence; // landMark置信度[0,1],越大越好,小于该值不推识别 + public float fYawConfidence; // 水平置信度[0,1],越大越好,小于该值不推识别 + public int nXBoundOffset; // 人脸区域距离x方向边界最小像素点[0,8191](8192坐标系),小于该值不推识别 + public int nYBoundOffset; // 人脸区域距离y方向边界最小像素点[0,8191](8192坐标系),小于该值不推识别 + public int[] uFaceSize = new int[2]; // 可识别人脸像素大小范围,最小值50,最大值500 + public byte[] reserved = new byte[512]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"fRoll", "fYaw", "fPitch", "fBlur", "fLandMarkConfidence", + "fYawConfidence", "nXBoundOffset", "nYBoundOffset", "uFaceSize", "reserved"}); + } + + public static class ByReference extends STU_CFG_RECOGNIZE_LIMIT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_RECOGNIZE_LIMIT implements Structure.ByValue + { + } + } + + // 检测抓拍安全边界 + public static class STU_CFG_SNAPSHOT_LIMIT extends Structure + { + public float[] fRoll = new float[2]; // 斜脸角度区间[-180,180] + public float[] fYaw = new float[2]; // 侧脸角度区间[-180,180] + public float[] fPitch = new float[2]; // 俯仰角度区间[-180,180] + public float fBlur; // 模糊度[0,1],越小越好,大于该值不推识别 + public float fLandMarkConfidence; // landMark置信度[0,1],越大越好,小于该值不推识别 + public float fYawConfidence; // 水平置信度[0,1],越大越好,小于该值不推识别 + public int nXBoundOffset; // 人脸区域距离x方向边界最小像素点[0,8191](8192坐标系),小于该值不推识别 + public int nYBoundOffset; // 人脸区域距离y方向边界最小像素点[0,8191](8192坐标系),小于该值不推识别 + public int[] uFaceSize = new int[2]; // 可识别人脸像素大小范围,最小值50,最大值500 + public byte[] reserved = new byte[512]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"fRoll", "fYaw", "fPitch", "fBlur", "fLandMarkConfidence", + "fYawConfidence", "nXBoundOffset", "nYBoundOffset", "uFaceSize", "reserved"}); + } + + public static class ByReference extends STU_CFG_SNAPSHOT_LIMIT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_SNAPSHOT_LIMIT implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 推图安全边界配置 + public static class STU_CFG_FACE_PUSH_LIMIT extends Structure + { + public STU_CFG_RECOGNIZE_LIMIT stRegconizeLimit; // 识别推送安全边界 + public STU_CFG_SNAPSHOT_LIMIT stSnapshotLimit; // 检测抓拍安全边界 + public byte[] reserved = new byte[2048]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stRegconizeLimit", "stSnapshotLimit", "reserved"}); + } + + public static class ByReference extends STU_CFG_FACE_PUSH_LIMIT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_FACE_PUSH_LIMIT implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 活体配置 + public static class STU_CFG_LIVENESS extends Structure + { + public int bEnable; // 使能 + public float fLivenessThreshold; // 活体阈值[0,100] + public byte[] reserved = new byte[512]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "fLivenessThreshold", "reserved"}); + } + + public static class ByReference extends STU_CFG_LIVENESS implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_LIVENESS implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 人体检测配置 + public static class STU_CFG_HUMAN_BODY_DETECT extends Structure + { + public int bBodyAttriEnable; // 人体属性使能 + public int bQualityFilter; // 人体质量过滤 + public byte[] reserved = new byte[508]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bBodyAttriEnable", "bQualityFilter", "reserved"}); + } + + public static class ByReference extends STU_CFG_HUMAN_BODY_DETECT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_HUMAN_BODY_DETECT implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 智能算法版本 + public static class STU_CFG_INTELLI_ALGORITHM_VERSION extends Structure + { + public byte[] szAlgorithmVersion = new byte[64]; // 智能算法版本 + public byte[] reserved = new byte[64]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szAlgorithmVersion", "reserved"}); + } + + public static class ByReference extends STU_CFG_INTELLI_ALGORITHM_VERSION implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_INTELLI_ALGORITHM_VERSION implements Structure.ByValue + { + } + } + + // 智能算法版本获取 + public static class STU_CFG_ALGORITHM_VERSION_GET extends Structure + { + // 数量 + public int nCount; + // 智能算法版本列表 + public STU_CFG_INTELLI_ALGORITHM_VERSION[] stuIntelliAlgorithmVersions = new STU_CFG_INTELLI_ALGORITHM_VERSION[NetDefs.MAX_INTELLI_ALGORITHM_VERSION_NUM]; + + public STU_CFG_ALGORITHM_VERSION_GET() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nCount", "stuIntelliAlgorithmVersions"}); + } + + public static class ByReference extends STU_CFG_ALGORITHM_VERSION_GET implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ALGORITHM_VERSION_GET implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 视频输入制式配置 + public static class STU_CFG_VIDEOIN_STANDARD extends Structure + { + public int nStandardType; // 0 - "PAL", 1 - "NTSC", 2 - "SECAM" + public byte[] reserved = new byte[128]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nStandardType", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_STANDARD implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_STANDARD implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 视频输入色彩设置 + public static class STU_CFG_VIDEOIN_COLOR_SETTING extends Structure + { + // 亮度, 0-100, 默认50 + public int nBrightness; + // 对比度, 0-100, 默认50 + public int nContrast; + // 色调, 0-100, 默认50 + public int nHue; + // 饱和度, 0-100, 默认50 + public int nSaturation; + // 色度抑制, 0~100, 默认50, 0表示不抑制, 100表示全部抑制 + public int nChomaSuppress; + // 颜色风格, 0~10, 风格 0-标准, 1-柔和, 2-艳丽 + public int nColortype; + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nBrightness", "nContrast", "nHue", + "nSaturation", "nChomaSuppress", "nColortype", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_COLOR_SETTING implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_COLOR_SETTING implements Structure.ByValue + { + } + } + + // 视频输入gamma设置 + public static class STU_CFG_VIDEOIN_GAMMA_SETTING extends Structure + { + // 伽马模式索引, 0-9 + public int nModeIndex; + // 伽马校正等级, 0-100,默认50 + public int nLevel; + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nModeIndex", "nLevel", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_GAMMA_SETTING implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_GAMMA_SETTING implements Structure.ByValue + { + } + } + + // 视频输入色彩参数设置 + public static class STU_CFG_VIDEOIN_COLOR_PARAM extends Structure + { + // 数组下标 0 - 视频, 1 - 图片, 2 - 抓拍 + public STU_CFG_VIDEOIN_COLOR_SETTING[] stColorArr = new STU_CFG_VIDEOIN_COLOR_SETTING[NetDefs.MAX_VIDEO_IN_SETTING_TYPE_COUNT]; + + public STU_CFG_VIDEOIN_COLOR_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stColorArr"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_COLOR_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_COLOR_PARAM implements Structure.ByValue + { + } + } + + // 视频输入gamma参数参数设置 + public static class STU_CFG_VIDEOIN_GAMMA_PARAM extends Structure + { + // 数组下标 0 - 视频, 1 - 图片, 2 - 抓拍 + public STU_CFG_VIDEOIN_GAMMA_SETTING[] stGammaArr = new STU_CFG_VIDEOIN_GAMMA_SETTING[NetDefs.MAX_VIDEO_IN_SETTING_TYPE_COUNT]; + + public STU_CFG_VIDEOIN_GAMMA_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stGammaArr"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_GAMMA_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_GAMMA_PARAM implements Structure.ByValue + { + } + } + + // 视频输入图像调节 + public static class STU_CFG_VIDEOIN_IMAGE_ADJUSTMENT extends Structure + { + // 色彩设置, 数组下标 0 - 白天, 1 - 黑夜, 2 - 普通 + public STU_CFG_VIDEOIN_COLOR_PARAM[] stColorParamArr = new STU_CFG_VIDEOIN_COLOR_PARAM[NetDefs.MAX_VIDEO_IN_TIME_SECTION_COUNT]; + // gamma参数, 数组下标 0 - 白天, 1 - 黑夜, 2 - 普通 + public STU_CFG_VIDEOIN_GAMMA_PARAM[] stGammaParamArr = new STU_CFG_VIDEOIN_GAMMA_PARAM[NetDefs.MAX_VIDEO_IN_TIME_SECTION_COUNT]; + // 保留参数 + public byte[] reserved = new byte[1024]; + + public STU_CFG_VIDEOIN_IMAGE_ADJUSTMENT() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stColorParamArr", "stGammaParamArr", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_IMAGE_ADJUSTMENT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_IMAGE_ADJUSTMENT implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 视频输入锐度设置 + public static class STU_CFG_VIDEOIN_SHARPNESS_SETTING extends Structure + { + // 锐度, 0-100, 默认50 + public int nSharpness; + // 锐度抑制, 0~100, 默认50, 0表示不抑制, 100表示完全抑制 + public int nSharpSuppress; + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nSharpness", "nSharpSuppress", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_SHARPNESS_SETTING implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_SHARPNESS_SETTING implements Structure.ByValue + { + } + } + + // 视频输入降噪模块参数设置 + public static class STU_CFG_VIDEOIN_KTNF_SETTING extends Structure + { + // 2D降噪使能, FALSE:不使能, TRUE:使能,默认使能 + public int bNr2dEnablel; + // 2D降噪等级, 0~100, 默认50 + public int nNr2dLevel; + // 3D降噪使能, FALSE:不使能, TRUE:使能,默认使能 + public int bNr3dEnable; + // 3D降噪模式, 0 - 普通模式, 1 - 专家模式 , 默认1 - 专家模式 + public int nNr3dOption; + // 3D降噪普通等级, 范围0~100, 默认50 + public int nNr3dLevel; + // 3D降噪专家时域等级, 0~100, 默认50 + public int nNr3dTnfLevel; + // 3D降噪专家空域等级, 0~100, 默认50 + public int nNr3dSnfLevel; + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bNr2dEnablel", "nNr2dLevel", "bNr3dEnable", + "nNr3dOption", "nNr3dLevel", "nNr3dTnfLevel", "nNr3dSnfLevel", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_KTNF_SETTING implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_KTNF_SETTING implements Structure.ByValue + { + } + } + + // 视频输入透雾设置参数设置 + public static class STU_CFG_VIDEOIN_DEFOG_SETTING extends Structure + { + // 透雾模式, 0-关闭,1-自动,2-手动 + public int nMode; + // 手动模式下强度, 0-低,1-中,2-高, 默认中 + public int nIntensity; + // 大气光模式, 0-自动,1-手动 + public int nLightIntensityMode; + // 大气光强值, 0-12 + public int nLightIntensityLevel; + // 光学去雾使能, FALSE—关 TRUE—开(对应物理上的挡片) + public int bCamDefogEnable; + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nMode", "nIntensity", "nLightIntensityMode", + "nLightIntensityLevel", "bCamDefogEnable", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_DEFOG_SETTING implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_DEFOG_SETTING implements Structure.ByValue + { + } + } + + // 视频输入锐度 + public static class STU_CFG_VIDEOIN_SHARPNESS_PARAM extends Structure + { + // 数组下标 0 - 视频, 1 - 图片, 2 - 抓拍 + public STU_CFG_VIDEOIN_SHARPNESS_SETTING[] stSharpnessArr = new STU_CFG_VIDEOIN_SHARPNESS_SETTING[NetDefs.MAX_VIDEO_IN_SETTING_TYPE_COUNT]; + + public STU_CFG_VIDEOIN_SHARPNESS_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stSharpnessArr"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_SHARPNESS_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_SHARPNESS_PARAM implements Structure.ByValue + { + } + } + + // 视频输入降噪模块参数 + public static class STU_CFG_VIDEOIN_KTNF_PARAM extends Structure + { + // 数组下标 0 - 视频, 1 - 图片, 2 - 抓拍 + public STU_CFG_VIDEOIN_KTNF_SETTING[] stKtnfArr = new STU_CFG_VIDEOIN_KTNF_SETTING[NetDefs.MAX_VIDEO_IN_SETTING_TYPE_COUNT]; + + public STU_CFG_VIDEOIN_KTNF_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stKtnfArr"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_KTNF_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_KTNF_PARAM implements Structure.ByValue + { + } + } + + // 视频输入透雾设置参数 + public static class STU_CFG_VIDEOIN_DEFOG_PARAM extends Structure + { + // 数组下标 0 - 视频, 1 - 图片, 2 - 抓拍 + public STU_CFG_VIDEOIN_DEFOG_SETTING[] stDefogArr = new STU_CFG_VIDEOIN_DEFOG_SETTING[NetDefs.MAX_VIDEO_IN_SETTING_TYPE_COUNT]; + + public STU_CFG_VIDEOIN_DEFOG_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stDefogArr"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_DEFOG_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_DEFOG_PARAM implements Structure.ByValue + { + } + } + + // 视频输入图像增强 + public static class STU_CFG_VIDEOIN_IMAGE_ENHANCEMENT extends Structure + { + // 数组下标 0 - 视频, 1 - 图片, 2 - 抓拍 + public STU_CFG_VIDEOIN_SHARPNESS_PARAM[] stSharpnessParamArr = new STU_CFG_VIDEOIN_SHARPNESS_PARAM[NetDefs.MAX_VIDEO_IN_SETTING_TYPE_COUNT]; + // 降噪模块, 数组下标 0 - 白天, 1 - 黑夜, 2 - 普通 + public STU_CFG_VIDEOIN_KTNF_PARAM[] stKtnfParamArr = new STU_CFG_VIDEOIN_KTNF_PARAM[NetDefs.MAX_VIDEO_IN_TIME_SECTION_COUNT]; + // 透雾设置, 数组下标 0 - 白天, 1 - 黑夜, 2 - 普通 + public STU_CFG_VIDEOIN_DEFOG_PARAM[] stDefogParamArr = new STU_CFG_VIDEOIN_DEFOG_PARAM[NetDefs.MAX_VIDEO_IN_TIME_SECTION_COUNT]; + // 保留参数 + public byte[] reserved = new byte[1024]; + + public STU_CFG_VIDEOIN_IMAGE_ENHANCEMENT() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stSharpnessParamArr", "stKtnfParamArr", "stDefogParamArr", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_IMAGE_ENHANCEMENT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_IMAGE_ENHANCEMENT implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 视频输入曝光设置 + public static class STU_CFG_VIDEOIN_EXPOSURE_SETTING extends Structure + { + // 曝光模式 + // 0:默认,自动模式, 1:低噪声, 2: 防拖影, 3 : 未定义, 4 : 用于自定义, 5 : 光圈优先,曝光时间和增益自动调整 + // 6 : 手动固定, 7 : 增益优先, 8 : 快门优先, 9 : 闪光灯脉宽模式(卡口小快门模式) + public int nAeMode; + // 曝光模式选择 + // 0:自动曝光, 1:手动曝光, 2~8 : 未定义, 9:区间自动, 10:自定义曝光 + public int nExpMode; + // 曝光上限, 0~40, 默认40ms + public int nExpMax; + // 曝光下限, 0~40, 默认0ms + public int nExpMin; + // 自定义曝光值, nExpMode为自定义曝光下使用 + public int nExpCustom; + // 增益上限, 0-100,默认50 + public int nGainMax; + // 增益下限, 0-100,默认50 + public int nGainMin; + // 固定增益值, 表示自动增益的上限 + public int nGain; + // 增益模式, 0-固定增益,大小为Gain, 1 - 自动增益, 2 - 用户自定义增益,范围[GainMin, GainMax] + public int nGainMode; + // 防闪烁模式, 0-Outdoor, 1-50Hz防闪烁, 2-60Hz防闪烁,默认0 + public int nAntiFlicker; + // 曝光响应速度, 0~15, 越大越慢, 默认2 + public int nAeSpeed; + // 曝光灵敏度, 0~15,越大越慢,默认5 + public int nAeSenstive; + // 曝光参考亮度(曝光等级), 0~100,默认50 + public int nEvdefault; + // 自动曝光恢复, 单位为秒,0表示关闭 + public int nRecoveryTime; + // 自动区间低照使能 + public int bLowLuxAutoEnable; + // 快门步长等级, 0~10 + public int nShuStep; + // 光圈步长等级, 0~10 + public int nIrisStep; + // 增益步长等级, 0~10 + public int nGainStep; + // 卡警爆闪抓拍小快门, 范围0~20ms + public int nSnapExpTime; + // 卡警爆闪抓拍时,白天增益上限, 范围0~20ms + public int nSnapGainMax; + // aeMode模式为光圈优先时调节, 范围0~20ms + public int nExposureIris; + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nAeMode", "nExpMode", "nExpMax", "nExpMin", + "nExpCustom", "nGainMax", "nGainMin", "nGain", "nGainMode", "nAntiFlicker", + "nAeSpeed", "nAeSenstive", "nEvdefault", "nRecoveryTime", "bLowLuxAutoEnable", + "nShuStep", "nIrisStep", "nGainStep", "nSnapExpTime", "nSnapGainMax", "nExposureIris", + "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_EXPOSURE_SETTING implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_EXPOSURE_SETTING implements Structure.ByValue + { + } + } + + // 视频输入宽动态设置 + public static class STU_CFG_VIDEOIN_AE_WDR_SETTING extends Structure + { + // 宽动态模式, 0:宽动态关闭, 1:数字宽动态, 2:真正宽度态, 3:自动数字宽动态 + // 4:自动宽动态(真实宽动态场景自适应) + public int nMode; + // 宽动态等级, 0~100 默认50 + public int nLevel; + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nMode", "nLevel", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_AE_WDR_SETTING implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_AE_WDR_SETTING implements Structure.ByValue + { + } + } + + // 背光补偿参数 + public static class STU_VIDEO_IN_ADVANCED_BACK_LIGHT_PARAM extends Structure + { + // 背光补偿等级, 0-关闭, 1-弱,2-中,3-强,4-自定义 + public int nLevel; + // 保留参数 + public byte[] reserved = new byte[32]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nLevel", "reserved"}); + } + + public static class ByReference extends STU_VIDEO_IN_ADVANCED_BACK_LIGHT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEO_IN_ADVANCED_BACK_LIGHT_PARAM implements Structure.ByValue + { + } + } + + // 强光抑制参数 + public static class STU_VIDEO_IN_ADVANCED_OLS_PARAM extends Structure + { + // 强光抑制等级, 0-关闭, 1-弱,2-中,3-强 + public int nLevel; + // 强光抑制模式, 1-FPGA模式 0-普通模式 + public int nGlareInMode; + // 曝光上限, 0~40, 默认40ms + public int nExpMaxOLS; + // 曝光下限, 0~40, 默认0ms + public int nExpMinOLS; + // 增益上限, 0~100默认50 + public int nGainMaxOLS; + // 增益下限, 0~100默认50 + public int nGainMinOLS; + // 强光抑制灵敏度, 只在强光抑制模式有效 + public int nGlareInSensitivity; + // 保留参数 + public byte[] reserved = new byte[32]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nLevel", "nGlareInMode", "nExpMaxOLS", + "nExpMinOLS", "nGainMaxOLS", "nGainMinOLS", "nGlareInSensitivity", "reserved"}); + } + + public static class ByReference extends STU_VIDEO_IN_ADVANCED_OLS_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEO_IN_ADVANCED_OLS_PARAM implements Structure.ByValue + { + } + } + + // 视频输入测光设置 + public static class STU_CFG_VIDEOIN_AE_ADVANCED_SETTING extends Structure + { + // 测光模式, 0:全局测光模式, 1:局部测光模式, 2:背光补偿(blc), 3:强光抑制(OLS) + public int nFlag; + // 测光区间实际个数 + public int nRegionCount; + // 测光区间 + public STU_RECT_L[] stRegions = new STU_RECT_L[NetDefs.MAX_VIDEO_IN_AE_ADVANCED_REGION_COUNT]; + // 背光补偿参数 + public STU_VIDEO_IN_ADVANCED_BACK_LIGHT_PARAM stBackLightParam = new STU_VIDEO_IN_ADVANCED_BACK_LIGHT_PARAM(); + // 强光抑制参数 + public STU_VIDEO_IN_ADVANCED_OLS_PARAM stOlsParam = new STU_VIDEO_IN_ADVANCED_OLS_PARAM(); + // 保留参数 + public byte[] reserved = new byte[64]; + + public STU_CFG_VIDEOIN_AE_ADVANCED_SETTING() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nFlag", "nRegionCount", "stRegions", + "stBackLightParam", "stOlsParam", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_AE_ADVANCED_SETTING implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_AE_ADVANCED_SETTING implements Structure.ByValue + { + } + } + + // 视频输入快门设置 + public static class STU_CFG_VIDEOIN_SHUTTER_MODE_SETTING extends Structure + { + // 快门模式 0: 单快门全帧率, 1: 双快门全帧率, 2 : 双快门半帧率, 3 : 三快门半帧率 + public int nMode; + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nMode", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_SHUTTER_MODE_SETTING implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_SHUTTER_MODE_SETTING implements Structure.ByValue + { + } + } + + // 视频输入自动光圈设置 + public static class STU_CFG_VIDEOIN_IRIS_SETTING extends Structure + { + // 自动光圈的使能, TRUE-启用(自动),FALSE-不启用(手动) + public int bAutoIrisEnable; + // 灵敏度, [0-100] + public int nSensitivity; + // 光圈调节的上限, [0-100] + public int nIrisMax; + // 光圈调节的下限, [0-100] + public int nIrisMin; + // 设备类型, 0: 正序PIRIS光圈, 1: 反序PIRIS光圈, 2 : DC光圈, 3 : 固定光圈, 4 : 霍尔光圈 + public int nIrisType; + // AutoIris在手动情况下控制光圈状态, 1-开启,0-关闭 + public int nIrisManualType; + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bAutoIrisEnable", "nSensitivity", "nIrisMax", + "nIrisMin", "nIrisType", "nIrisManualType", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_IRIS_SETTING implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_IRIS_SETTING implements Structure.ByValue + { + } + } + + // 视频输入自动曝光设置 + public static class STU_CFG_VIDEOIN_AE_SCENE_EXP_SETTING extends Structure + { + // 场景曝光模式, 0:不开启场景曝光模式, 1:人脸 曝光场景模式, 2 : 车牌 曝光场景模式 + public int nMode; + // 目标亮度, [0-255] + public int nTargetLuma; + // 2A人脸曝光间隔检测时间:当前人脸离开画面,画面亮度保持的时间, [0-3600],单位:秒 + public int nInterval; + // 调节速度, [0-100] + public int nSpeed; + // 是否启用逆光亮度补偿, 0-不开启, 1 - 开启 + public int nBlBcSw; + // 是否启用顺光亮度补偿, 0-不开启, 1 - 开启 + public int nOlBcSw; + // 强逆光目标亮度调节阈值1, 要求 nExpBlThr1 < nExpBlThr2 < nExpOlThr1 < nExpOlThr2 + public int nExpBlThr1; + // 强逆光目标亮度调节阈值2 + public int nExpBlThr2; + // 强顺光目标亮度调节阈值1 + public int nExpOlThr1; + // 强顺光目标亮度调节阈值2 + public int nExpOlThr2; + // 逆光亮度补偿调节等级,范围0~100 + public int nBlBcVal; + // 顺光亮度补偿调节等级,范围0~100 + public int nOlBcVal; + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nMode", "nTargetLuma", "nInterval", + "nSpeed", "nBlBcSw", "nOlBcSw", "nExpBlThr1", "nExpBlThr2", "nExpOlThr1", + "nExpOlThr2", "nBlBcVal", "nOlBcVal", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_AE_SCENE_EXP_SETTING implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_AE_SCENE_EXP_SETTING implements Structure.ByValue + { + } + } + + // 视频输入曝光设置参数 + public static class STU_CFG_VIDEOIN_AE_PARAM extends Structure + { + // 数组下标 0 - 视频, 1 - 图片, 2 - 抓拍 + public STU_CFG_VIDEOIN_EXPOSURE_SETTING[] stAeArr = new STU_CFG_VIDEOIN_EXPOSURE_SETTING[NetDefs.MAX_VIDEO_IN_SETTING_TYPE_COUNT]; + + public STU_CFG_VIDEOIN_AE_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stAeArr"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_AE_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_AE_PARAM implements Structure.ByValue + { + } + } + + // 视频输入宽动态设置参数 + public static class STU_CFG_VIDEOIN_AE_WDR_PARAM extends Structure + { + // 数组下标 0 - 视频, 1 - 图片, 2 - 抓拍 + public STU_CFG_VIDEOIN_AE_WDR_SETTING[] stAeWdrArr = new STU_CFG_VIDEOIN_AE_WDR_SETTING[NetDefs.MAX_VIDEO_IN_SETTING_TYPE_COUNT]; + + public STU_CFG_VIDEOIN_AE_WDR_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stAeWdrArr"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_AE_WDR_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_AE_WDR_PARAM implements Structure.ByValue + { + } + } + + // 视频输入测光设置参数 + public static class STU_CFG_VIDEOIN_AE_ADVANCED_PARAM extends Structure + { + // 数组下标 0 - 视频, 1 - 图片, 2 - 抓拍 + public STU_CFG_VIDEOIN_AE_ADVANCED_SETTING[] stAeAdvanceArr = new STU_CFG_VIDEOIN_AE_ADVANCED_SETTING[NetDefs.MAX_VIDEO_IN_SETTING_TYPE_COUNT]; + + public STU_CFG_VIDEOIN_AE_ADVANCED_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stAeAdvanceArr"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_AE_ADVANCED_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_AE_ADVANCED_PARAM implements Structure.ByValue + { + } + } + + // 视频输入快门设置参数 + public static class STU_CFG_VIDEOIN_SHUTTER_MODE_PARAM extends Structure + { + // 数组下标 0 - 视频, 1 - 图片, 2 - 抓拍 + public STU_CFG_VIDEOIN_SHUTTER_MODE_SETTING[] stShutterModeArr = new STU_CFG_VIDEOIN_SHUTTER_MODE_SETTING[NetDefs.MAX_VIDEO_IN_SETTING_TYPE_COUNT]; + + public STU_CFG_VIDEOIN_SHUTTER_MODE_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stShutterModeArr"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_SHUTTER_MODE_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_SHUTTER_MODE_PARAM implements Structure.ByValue + { + } + } + + // 视频输入自动光圈设置参数 + public static class STU_CFG_VIDEOIN_IRIS_PARAM extends Structure + { + // 数组下标 0 - 视频, 1 - 图片, 2 - 抓拍 + public STU_CFG_VIDEOIN_IRIS_SETTING[] stIrisArr = new STU_CFG_VIDEOIN_IRIS_SETTING[NetDefs.MAX_VIDEO_IN_SETTING_TYPE_COUNT]; + + public STU_CFG_VIDEOIN_IRIS_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stIrisArr"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_IRIS_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_IRIS_PARAM implements Structure.ByValue + { + } + } + + // 视频输入自动曝光设置参数 + public static class STU_CFG_VIDEOIN_AE_SCENE_EXP_PARAM extends Structure + { + // 数组下标 0 - 视频, 1 - 图片, 2 - 抓拍 + public STU_CFG_VIDEOIN_AE_SCENE_EXP_SETTING[] stAeSceneExpArr = new STU_CFG_VIDEOIN_AE_SCENE_EXP_SETTING[NetDefs.MAX_VIDEO_IN_SETTING_TYPE_COUNT]; + + public STU_CFG_VIDEOIN_AE_SCENE_EXP_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stAeSceneExpArr"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_AE_SCENE_EXP_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_AE_SCENE_EXP_PARAM implements Structure.ByValue + { + } + } + + // 视频输入曝光 + public static class STU_CFG_VIDEOIN_EXPOSURE extends Structure + { + // 曝光, 数组下标 0 - 白天, 1 - 黑夜, 2 - 普通 + public STU_CFG_VIDEOIN_AE_PARAM[] stAeParamArr = new STU_CFG_VIDEOIN_AE_PARAM[NetDefs.MAX_VIDEO_IN_TIME_SECTION_COUNT]; + // 宽动态, 数组下标 0 - 白天, 1 - 黑夜, 2 - 普通 + public STU_CFG_VIDEOIN_AE_WDR_PARAM[] stAeWdrParamArr = new STU_CFG_VIDEOIN_AE_WDR_PARAM[NetDefs.MAX_VIDEO_IN_TIME_SECTION_COUNT]; + // 测光, 数组下标 0 - 白天, 1 - 黑夜, 2 - 普通 + public STU_CFG_VIDEOIN_AE_ADVANCED_PARAM[] stAeAdvanceParamArr = new STU_CFG_VIDEOIN_AE_ADVANCED_PARAM[NetDefs.MAX_VIDEO_IN_TIME_SECTION_COUNT]; + // 快门, 数组下标 0 - 白天, 1 - 黑夜, 2 - 普通 + public STU_CFG_VIDEOIN_SHUTTER_MODE_PARAM[] stShutterModeParamAr = new STU_CFG_VIDEOIN_SHUTTER_MODE_PARAM[NetDefs.MAX_VIDEO_IN_TIME_SECTION_COUNT]; + // 自动光圈参数, 数组下标 0 - 白天, 1 - 黑夜, 2 - 普通 + public STU_CFG_VIDEOIN_IRIS_PARAM[] stIrisParamArr = new STU_CFG_VIDEOIN_IRIS_PARAM[NetDefs.MAX_VIDEO_IN_TIME_SECTION_COUNT]; + // 自动曝光参数, 数组下标 0 - 白天, 1 - 黑夜, 2 - 普通 + public STU_CFG_VIDEOIN_AE_SCENE_EXP_PARAM[] stAeSceneExpParamArr = new STU_CFG_VIDEOIN_AE_SCENE_EXP_PARAM[NetDefs.MAX_VIDEO_IN_TIME_SECTION_COUNT]; + // 保留参数 + public byte[] reserved = new byte[1024]; + + public STU_CFG_VIDEOIN_EXPOSURE() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stAeParamArr", "stAeWdrParamArr", "stAeAdvanceParamArr", + "stShutterModeParamAr", "stIrisParamArr", "stAeSceneExpParamArr", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_EXPOSURE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_EXPOSURE implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 视频输入白平衡设置 + public static class STU_CFG_VIDEOIN_WHITE_BALANCE_SETTING extends Structure + { + // 白平衡模式, 0: 禁止, 1 : 自动, 2 : 晴天, 3 : 阴天, 4 : 家里, 5 : 办公, 6 : 夜晚, 7 : 自定义, 8 : 高色温区间 + // 9 : 低色温区间, 10 : 自动色温区间, 11 : 自定义色温等级, 12 : 室内, 13 : 室外, 14 : 跟踪, 15 : 手动, 16 : 室外自动 + // 17 : 钠灯自动, 18 : 钠灯, 19 : 自定义单区域白平衡, 20 : 自定义多区域白平衡, 21 : 自然光, 22 : 路灯, 254 : 白平衡调试模式 + public int nAwbMode; + // 卡警抓怕模式, 0:前端带抓拍模式, 1:前端不带抓拍模式 + public int nWbCtrlMode; + + // 自定义白平衡的预制 + // 红色增益值 0-100 默认50 + public int nRCustom; + // 蓝色增益值 0-100 默认50 + public int nBCustom; + + // 自定义区域白平衡区域框 + // 区域白平衡实际个数 + public int nRoiRectCount; + // 区域白平衡, 0 - 8191 + public STU_RECT_L[] stRoiRects = new STU_RECT_L[NetDefs.MAX_VIDEO_IN_WHITE_BALANCE_REGION_COUNT]; + // 权重参数 范围0-100 + public int nRoiRatio; + + // 保留参数 + public byte[] reserved = new byte[64]; + + public STU_CFG_VIDEOIN_WHITE_BALANCE_SETTING() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nAwbMode", "nWbCtrlMode", "nRCustom", + "nBCustom", "nRoiRectCount", "stRoiRects", "nRoiRatio", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_WHITE_BALANCE_SETTING implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_WHITE_BALANCE_SETTING implements Structure.ByValue + { + } + } + + // 视频输入白平衡设置参数 + public static class STU_CFG_VIDEOIN_WHITE_BALANCE_PARAM extends Structure + { + // 数组下标 0 - 视频, 1 - 图片, 2 - 抓拍 + public STU_CFG_VIDEOIN_WHITE_BALANCE_SETTING[] stWhiteBalanceArr = new STU_CFG_VIDEOIN_WHITE_BALANCE_SETTING[NetDefs.MAX_VIDEO_IN_SETTING_TYPE_COUNT]; + + public STU_CFG_VIDEOIN_WHITE_BALANCE_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stWhiteBalanceArr"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_WHITE_BALANCE_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_WHITE_BALANCE_PARAM implements Structure.ByValue + { + } + } + + // 视频输入白平衡 + public static class STU_CFG_VIDEOIN_WHITE_BALANCE extends Structure + { + // 曝光, 数组下标 0 - 白天, 1 - 黑夜, 2 - 普通 + public STU_CFG_VIDEOIN_WHITE_BALANCE_PARAM[] stWhiteBalanceParamArr = new STU_CFG_VIDEOIN_WHITE_BALANCE_PARAM[NetDefs.MAX_VIDEO_IN_TIME_SECTION_COUNT]; + // 保留参数 + public byte[] reserved = new byte[1024]; + + public STU_CFG_VIDEOIN_WHITE_BALANCE() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stWhiteBalanceParamArr", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_WHITE_BALANCE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_WHITE_BALANCE implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 视频输入聚焦设置(SD)设置参数 + public static class STU_CFG_VIDEOIN_FOCUS_PARAM extends Structure + { + // 聚焦模式, + // 0-关闭 + // 1 - 辅助聚焦(在手动聚焦的基础,会返回当前聚焦峰值,当峰值达到最大值时,表示聚焦完成,比肉眼确认更精确,但因为需要硬件及软件多一个模块,不是所有设备都支持), + // 2 - 自动聚焦, + // 3 - 半自动聚焦(定制功能,先自动聚焦,然后聚焦模块锁定。此时不能自动调焦,需要手动调节), + // 4 - 手动聚焦(人眼确认完成聚焦) + public int nFocusMode; + // 近端聚焦极限建议值,单位毫米. + // 不是镜头真实的聚焦极限值,而是给聚焦库的一个近端物体建议值,提高聚焦速度, uint:100~200001 + public int nFocusLimit; + // 聚焦灵敏度, 0-高,1-默认,2-低 + public int nFocusSensitivity; + // 聚焦极限(近端聚焦的极限物距)选取模式, 1-手动, 0-自动 + public int nFocusLimitMode; + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nFocusMode", "nFocusLimit", "nFocusSensitivity", + "nFocusLimitMode", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_FOCUS_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_FOCUS_PARAM implements Structure.ByValue + { + } + } + + // 视频输入变倍设置(SD)设置参数 + public static class STU_CFG_VIDEOIN_ZOOM_PARAM extends Structure + { + // 变倍速率, 取值范围见能力 + public int nSpeed; + // 数字变倍,数字变倍应该用电子云台 + public int bDigitalZoom; + // 当前速率下最大变倍上限 + public int nZoomLimit; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nSpeed", "bDigitalZoom", "nZoomLimit"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_ZOOM_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_ZOOM_PARAM implements Structure.ByValue + { + } + } + + // 视频输入变倍聚焦(SD) + public static class STU_CFG_VIDEOIN_ZOOM_FOCUS extends Structure + { + // 聚焦设置配置实际数量 + public int nFocusCount; + // 聚焦设置(SD) + public STU_CFG_VIDEOIN_FOCUS_PARAM[] stFocusParamArr = new STU_CFG_VIDEOIN_FOCUS_PARAM[NetDefs.MAX_VIDEO_IN_FOCUS_COUNT]; + + // 变倍设置配置实际数量 + public int nZoomCount; + // 变倍设置(SD) + public STU_CFG_VIDEOIN_ZOOM_PARAM[] stZoomParamArr = new STU_CFG_VIDEOIN_ZOOM_PARAM[NetDefs.MAX_VIDEO_IN_ZOOM_COUNT]; + + // 保留参数 + public byte[] reserved = new byte[1024]; + + public STU_CFG_VIDEOIN_ZOOM_FOCUS() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nFocusCount", "stFocusParamArr", "nZoomCount", + "stZoomParamArr", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_ZOOM_FOCUS implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_ZOOM_FOCUS implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + //视频输入日夜模式设置 + public static class STU_CFG_VIDEOIN_DAY_NIGHT_MODE_SETTING extends Structure + { + // 彩黑模式, 0:彩色模式, 1: 黑白模式, 2 : 自动切换, 3 : 根据光敏电阻切换 + public int nMode; + // IRCUT类型, 0: ircut正常切换,彩色是日片,黑白是夜片, 1: ircut始终是日片, 日夜模式发生改变 + public int nIRcutType; + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nMode", "nIRcutType", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_DAY_NIGHT_MODE_SETTING implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_DAY_NIGHT_MODE_SETTING implements Structure.ByValue + { + } + } + + // 视频输入日夜模式设置参数 + public static class STU_CFG_VIDEOIN_DAY_NIGHT_MODE_PARAM extends Structure + { + // 数组下标 0 - 视频, 1 - 图片, 2 - 抓拍 + public STU_CFG_VIDEOIN_DAY_NIGHT_MODE_SETTING[] stDayNightModeArr = new STU_CFG_VIDEOIN_DAY_NIGHT_MODE_SETTING[NetDefs.MAX_VIDEO_IN_SETTING_TYPE_COUNT]; + + public STU_CFG_VIDEOIN_DAY_NIGHT_MODE_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stDayNightModeArr"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_DAY_NIGHT_MODE_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_DAY_NIGHT_MODE_PARAM implements Structure.ByValue + { + } + } + + // 视频输入日夜模式 + public static class STU_CFG_VIDEOIN_DAY_NIGHT_MODE extends Structure + { + // 日夜模式, 数组下标 0 - 白天, 1 - 黑夜, 2 - 普通 + public STU_CFG_VIDEOIN_DAY_NIGHT_MODE_PARAM[] stDayNightModeParamArr = new STU_CFG_VIDEOIN_DAY_NIGHT_MODE_PARAM[NetDefs.MAX_VIDEO_IN_TIME_SECTION_COUNT]; + // 保留参数 + public byte[] reserved = new byte[1024]; + + public STU_CFG_VIDEOIN_DAY_NIGHT_MODE() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stDayNightModeParamArr", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_DAY_NIGHT_MODE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_DAY_NIGHT_MODE implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 视频输入图像调整设置参数 + public static class STU_CFG_VIDEOIN_IMAGE_STAB_PARAM extends Structure + { + // 电子防抖, FALSE-关闭,TRUE-开启 + public int bImageStabilization; + // 画面冻结,FALSE-不冻结, TRUE-冻结 + public int bImageFreeze; + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nMode", "nIRcutType", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_IMAGE_STAB_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_IMAGE_STAB_PARAM implements Structure.ByValue + { + } + } + + // 视频输入图像翻转设置参数 + public static class STU_CFG_VIDEOIN_ROTATE_PARAM extends Structure + { + // 窗口宽度 + public int nWidth; + // 窗口高度 + public int nHeight; + // 窗口x起始坐标 + public int nStartX; + // 窗口y起始坐标 + public int nStartY; + // 旋转标记, 0: 不旋转, 1: 顺时针旋转90度, 2 : 逆时针旋转90度 + public int nRotate; + // 镜像标记, FALSE-不开启,TRUE-开启 + public int bMirror; + // 翻转标记, FALSE-不开启,TRUE-开启 + public int bFlip; + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nWidth", "nHeight", "nStartX", + "nStartY", "nRotate", "bMirror", "bFlip", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_ROTATE_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_ROTATE_PARAM implements Structure.ByValue + { + } + } + + // 视频输入LDC参数设置参数 + public static class STU_CFG_VIDEOIN_LDC_PARAM extends Structure + { + // Ldc使能 + public int bLdcEnable; + // 矫正强度,范围[-100, 100] + public int nLdcLevel; + // 远端放大等级[0~100], 0 : 关闭, 1~100为远端放大级别 + public int nFarEndZoom; + // LDC模式, 0:垂直和水平畸变校正, 1:垂直畸变校正 + public int nMode; + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bLdcEnable", "nLdcLevel", "nFarEndZoom", + "nMode", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_LDC_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_LDC_PARAM implements Structure.ByValue + { + } + } + + // 视频输入视频调整 + public static class STU_CFG_VIDEOIN_VIDEO_ADJUSTMENT extends Structure + { + // 图像调整 + public STU_CFG_VIDEOIN_IMAGE_STAB_PARAM stImageStabParam = new STU_CFG_VIDEOIN_IMAGE_STAB_PARAM(); + // 图像翻转 + public STU_CFG_VIDEOIN_ROTATE_PARAM stRotateParam = new STU_CFG_VIDEOIN_ROTATE_PARAM(); + // LDC参数 + public STU_CFG_VIDEOIN_LDC_PARAM stLDCParam = new STU_CFG_VIDEOIN_LDC_PARAM(); + // 保留参数 + public byte[] reserved = new byte[1024]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stImageStabParam", "stRotateParam", "stLDCParam", "reserved"}); + } + + public static class ByReference extends STU_CFG_VIDEOIN_VIDEO_ADJUSTMENT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_VIDEOIN_VIDEO_ADJUSTMENT implements Structure.ByValue + { + } + } + + //////////////////////////////////////////////////////////////////////////////////////////////////// + // 货格配置 + public static class STU_GOODS_CONTAINER_CFG extends Structure + { + // 货格位置信息 + public STU_GOODS_CONTAINER_POSITION stPosition = new STU_GOODS_CONTAINER_POSITION(); + // 保留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stPosition", "reserved"}); + } + + public static class ByReference extends STU_GOODS_CONTAINER_CFG implements Structure.ByReference + { + } + + public static class ByValue extends STU_GOODS_CONTAINER_CFG implements Structure.ByValue + { + } + } + + // 货格配置行信息 + public static class STU_GOODS_CONTAINER_CFG_ROW extends Structure + { + // 每行货格实际个数 + public int nCloumnCount; + // 货柜某行某列的货格信息 + public STU_GOODS_CONTAINER_CFG[] stContainerCfgs = new STU_GOODS_CONTAINER_CFG[NetDefs.MAX_GOODS_CONTAINER_COLUMN_COUNT]; + // 保留参数 + public byte[] reserved = new byte[512]; + + public STU_GOODS_CONTAINER_CFG_ROW() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nCloumnCount", "stContainerCfgs", "reserved"}); + } + + public static class ByReference extends STU_GOODS_CONTAINER_CFG_ROW implements Structure.ByReference + { + } + + public static class ByValue extends STU_GOODS_CONTAINER_CFG_ROW implements Structure.ByValue + { + } + } + + // 货柜配置 + public static class STU_GOODS_SHELVE_CFG extends Structure + { + // 货柜编号,默认值填充设备序列号+数组序号 + public byte[] szShelveNo = new byte[64]; + + // 货柜起始行 + public int nStartRow; + // 货柜起始列 + public int nStartColumn; + + // 货格配置实际行数,最大MAX_GOODS_CONTAINER_COUNT个 + public int nRowCount; + // 每行货格配置信息 + public STU_GOODS_CONTAINER_CFG_ROW[] stContainerRows = new STU_GOODS_CONTAINER_CFG_ROW[NetDefs.MAX_GOODS_CONTAINER_ROW_COUNT]; + + // 保留参数 + public byte[] reserved = new byte[256]; + + public STU_GOODS_SHELVE_CFG() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"szShelveNo", "nStartRow", "nStartColumn", + "nRowCount", "stContainerRows", "reserved"}); + } + + public static class ByReference extends STU_GOODS_SHELVE_CFG implements Structure.ByReference + { + } + + public static class ByValue extends STU_GOODS_SHELVE_CFG implements Structure.ByValue + { + } + } + + // 新零售货柜配置 + public static class STU_CFG_GOODS_SHELVES extends Structure + { + // 时间段 + public STU_WEEK_TIME_SECTION_SCHEDULE stTimeSchedule = new STU_WEEK_TIME_SECTION_SCHEDULE(); + + // 货柜数量,最大MAX_GOODS_SHELVE_COUNT个 + public int nShelveCount; + // 货柜配置 + public STU_GOODS_SHELVE_CFG[] stShelveCfgs = new STU_GOODS_SHELVE_CFG[NetDefs.MAX_GOODS_SHELVE_COUNT]; + + // 保留参数 + public byte[] reserved = new byte[256]; + + public STU_CFG_GOODS_SHELVES() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stTimeSchedule", "nShelveCount", "stShelveCfgs", "reserved"}); + } + + public static class ByReference extends STU_CFG_GOODS_SHELVES implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_GOODS_SHELVES implements Structure.ByValue + { + } + } + + ////////////////////////////////////////////////////////////////////////////////////// + // 非法动火配置 + public static class STU_CFG_ILLEGAL_FILE_OPERATION extends Structure + { + // 动火报警使能, 禁用 - FLASE, 使能 - TRUE + public int bEnable; + + // 动火检测灵敏度,灵敏度越高,动火检测越灵敏。范围:[0,100] + public int nSensitivity; + + // 动火检测温度阈值。范围:[0,500] + public int nThreshold; + + // 保留字节 + public byte[] reserved = new byte[128]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "nSensitivity", "nThreshold", "reserved"}); + } + + public static class ByReference extends STU_CFG_ILLEGAL_FILE_OPERATION implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_ILLEGAL_FILE_OPERATION implements Structure.ByValue + { + } + } + + // 抽烟报警配置 + public static class STU_CFG_SMOKE_ALARM extends Structure + { + // 抽烟报警使能, 禁用 - FLASE, 使能 - TRUE + public int bEnable; + + // 保留字节 + public byte[] reserved = new byte[128]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "reserved"}); + } + + public static class ByReference extends STU_CFG_SMOKE_ALARM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_SMOKE_ALARM implements Structure.ByValue + { + } + } + + // 烟雾报警配置 + public static class STU_CFG_SMOG_ALARM extends Structure + { + // 烟雾报警使能, 禁用 - FLASE, 使能 - TRUE + public int bEnable; + + // 保留字节 + public byte[] reserved = new byte[128]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "reserved"}); + } + + public static class ByReference extends STU_CFG_SMOG_ALARM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_SMOG_ALARM implements Structure.ByValue + { + } + } + + // 火警报警配置 + public static class STU_CFG_FIRE_ALARM extends Structure + { + // 火警报警使能, 禁用 - FLASE, 使能 - TRUE + public int bEnable; + + // 保留字节 + public byte[] reserved = new byte[128]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "reserved"}); + } + + public static class ByReference extends STU_CFG_FIRE_ALARM implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_FIRE_ALARM implements Structure.ByValue + { + } + } + + // 操作人数不合规报警配置 + public static class STU_CFG_OPERATOR_NONCOMPLIANCE extends Structure + { + // 操作人数不合规报警使能, 禁用 - FLASE, 使能 - TRUE + public int bEnable; + + // 保留字节 + public byte[] reserved = new byte[128]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "reserved"}); + } + + public static class ByReference extends STU_CFG_OPERATOR_NONCOMPLIANCE implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_OPERATOR_NONCOMPLIANCE implements Structure.ByValue + { + } + } + + // 动火报警检测配置 + public static class STU_CFG_FIRE_ALARM_DETECT extends Structure + { + // 非法动火配置 + public STU_CFG_ILLEGAL_FILE_OPERATION stIllegalFileOption = new STU_CFG_ILLEGAL_FILE_OPERATION(); + + // 抽烟报警配置 + public STU_CFG_SMOKE_ALARM stSmokeAlarm = new STU_CFG_SMOKE_ALARM(); + + // 烟雾报警配置 + public STU_CFG_SMOG_ALARM stSmogAlarm = new STU_CFG_SMOG_ALARM(); + + // 火警报警配置 + public STU_CFG_FIRE_ALARM stFireAlarm = new STU_CFG_FIRE_ALARM(); + + // 操作人数不合规报警配置 + public STU_CFG_OPERATOR_NONCOMPLIANCE stOperatorNoncompliance = new STU_CFG_OPERATOR_NONCOMPLIANCE(); + + // 保留字节 + public byte[] reserved = new byte[1024]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stIllegalFileOption", "stSmokeAlarm", "stSmogAlarm", "stFireAlarm", "stOperatorNoncompliance", "reserved"}); + } + + public static class ByReference extends STU_CFG_FIRE_ALARM_DETECT implements Structure.ByReference + { + } + + public static class ByValue extends STU_CFG_FIRE_ALARM_DETECT implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + //报警信息结构体 + + //系统工作状态信息 + public static class STU_ALARM_EVENT_SYSTEM_WORKING_STATE extends Structure + { + public byte[] szEvent = new byte[64]; // 事件名称 + public int emState; // 系统状态,EM_SYSTEM_WORKING_STATE + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[256]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szEvent", "emState", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_SYSTEM_WORKING_STATE implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_SYSTEM_WORKING_STATE implements Structure.ByValue + { + } + } + + // 系统升级状态信息 + public static class STU_ALARM_EVENT_SYSTEM_UPGRADE extends Structure + { + public byte[] szEvent = new byte[64]; // 事件名称 + public int emState; // 升级状态,EM_SYS_UPGRADE_STATUS + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[256]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szEvent", "emState", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_SYSTEM_UPGRADE implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_SYSTEM_UPGRADE implements Structure.ByValue + { + } + } + + // 系统恢复默认信息 + public static class STU_ALARM_EVENT_SYSTEM_RESET extends Structure + { + public byte[] szEvent = new byte[64]; // 事件名称 + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[256]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szEvent", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_SYSTEM_RESET implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_SYSTEM_RESET implements Structure.ByValue + { + } + } + + // 本地外部报警(开关量输入触发报警)信息 + public static class STU_ALARM_EVENT_ED_SWITCH_IN extends Structure + { + public int nChannel; // 外部报警输入通道号 + public byte[] szEvent = new byte[64]; // 事件名称 + public int bStart; // FALSE-结束报警;TRUE-开始报警 + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[256]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "bStart", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_ED_SWITCH_IN implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_ED_SWITCH_IN implements Structure.ByValue + { + } + } + + // 视频移动侦测报警信息 + public static class STU_ALARM_EVENT_VIDEO_MOVING_DETECT extends Structure + { + public int nChannel; // 视频通道号 + public byte[] szEvent = new byte[64]; // 事件名称 + public int bStart; // FALSE-结束;TRUE-开始 + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[512]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "bStart", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_VIDEO_MOVING_DETECT implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_VIDEO_MOVING_DETECT implements Structure.ByValue + { + } + } + + // 视频遮挡报警信息 + public static class STU_ALARM_EVENT_VIDEO_SHELTER_DETECT extends Structure + { + public int nChannel; // 视频通道号 + public byte[] szEvent = new byte[64]; // 事件名称 + public int bStart; // FALSE-结束;TRUE-开始 + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[512]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "bStart", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_VIDEO_SHELTER_DETECT implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_VIDEO_SHELTER_DETECT implements Structure.ByValue + { + } + } + + // 网络中断报警信息 + public static class STU_ALARM_EVENT_NET_ABORT extends Structure + { + public byte[] szEvent = new byte[64]; // 事件名称 + public int bStart; // FALSE-结束;TRUE-开始 + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[512]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szEvent", "bStart", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_NET_ABORT implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_NET_ABORT implements Structure.ByValue + { + } + } + + // IP 冲突报警信息 + public static class STU_ALARM_EVENT_NET_IP_CONFLICT extends Structure + { + public byte[] szEvent = new byte[64]; // 事件名称 + public int bStart; // FALSE-结束;TRUE-开始 + public byte[] szAdapter = new byte[32]; // 网络适配器名称 + public byte[] szIP = new byte[64]; // 冲突的 IP 地址 + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[512]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szEvent", "bStart", "szAdapter", "szIP", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_NET_IP_CONFLICT implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_NET_IP_CONFLICT implements Structure.ByValue + { + } + } + + // MAC 冲突报警信息 + public static class STU_ALARM_EVENT_NET_MAC_CONFLICT extends Structure + { + public byte[] szEvent = new byte[64]; // 事件名称 + public int bStart; // FALSE-结束;TRUE-开始 + public byte[] szAdapter = new byte[32]; // 网络适配器名称 + public byte[] szMac = new byte[64]; // 冲突的 MAC 地址 + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[512]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szEvent", "bStart", "szAdapter", "szMac", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_NET_MAC_CONFLICT implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_NET_MAC_CONFLICT implements Structure.ByValue + { + } + } + + // 网络配置修改报警信息 + public static class STU_ALARM_EVENT_NET_CFG_CHANGE extends Structure + { + public byte[] szEvent = new byte[64]; // 事件名称 + public byte[] szAdapter = new byte[32]; // 网络适配器名称 + public byte[] szItem = new byte[64]; // 变更类型名称 + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[512]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szEvent", "szAdapter", "szItem", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_NET_CFG_CHANGE implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_NET_CFG_CHANGE implements Structure.ByValue + { + } + } + + // 网络切换告警 + public static class STU_ALARM_EVENT_NET_SWITCH_OVER extends Structure + { + public byte[] szEvent = new byte[64]; // 事件名称 + public byte[] szCurrentNetAdapter = new byte[128]; // 网络适配器名称 + public byte[] szLastNetAdapter = new byte[128]; // 变更类型名称 + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[512]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szEvent", "szCurrentNetAdapter", "szLastNetAdapter", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_NET_SWITCH_OVER implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_NET_SWITCH_OVER implements Structure.ByValue + { + } + } + + // 存储热插拔报警信息 + public static class STU_ALARM_EVENT_STORAGE_HOTPLUG extends Structure + { + public byte[] szEvent = new byte[64]; // 事件名称 + public int emHotPlugType; // 热插拔动作,EM_STORAGE_HOTPLUG_TYPE + public int nPhysicNo; // 物理编号 + public int nLogicNo; // 逻辑编号 + public byte[] szDiskName = new byte[64]; // 磁盘名称 + public byte[] szMedia = new byte[32]; // 介质类型 + public byte[] szBus = new byte[32]; // 总线类型 + public double dCapacity; // 容量,单位:Byte + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szEvent", "emHotPlugType", "nPhysicNo", "nLogicNo", + "szDiskName", "szMedia", "szBus", "dCapacity", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_STORAGE_HOTPLUG implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_STORAGE_HOTPLUG implements Structure.ByValue + { + } + } + + // 挂载分区报警信息 + public static class STU_ALARM_EVENT_STORAGE_MOUNT extends Structure + { + public byte[] szEvent = new byte[64]; // 事件名称 + public int bStart; // FALSE - 结束挂载; TRUE - 开始挂载 + public int bResult; // FLASE - 挂载失败; TRUE - 挂载成功 + // 当且仅当 bStart = FALSE 时有效 + public byte[] szDiskName = new byte[64]; // 磁盘名称 + public byte[] szPartition = new byte[64]; // 分区名称 + public byte[] szMedia = new byte[32]; // 介质类型 + public byte[] szBus = new byte[32]; // 总线类型 + public byte[] szMountOn = new byte[64]; // 挂载点 + public byte[] szFileSystem = new byte[64]; // 挂载的文件系统 + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szEvent", "bStart", "bResult", "szDiskName", + "szPartition", "szMedia", "szBus", "szMountOn", "szFileSystem", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_STORAGE_MOUNT implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_STORAGE_MOUNT implements Structure.ByValue + { + } + } + + // 卸载分区报警信息 + public static class STU_ALARM_EVENT_STORAGE_UMOUNT extends Structure + { + public byte[] szEvent = new byte[64]; // 事件名称 + public int bStart; // FALSE - 结束卸载; TRUE - 开始卸载 + public int bResult; // FLASE - 卸载失败; TRUE - 卸载成功 + // 当且仅当 bStart = FALSE 时有效 + public byte[] szDiskName = new byte[64]; // 磁盘名称 + public byte[] szPartition = new byte[64]; // 分区名称 + public byte[] szMedia = new byte[32]; // 介质类型 + public byte[] szBus = new byte[32]; // 总线类型 + public byte[] szMountOn = new byte[64]; // 挂载点 + public byte[] szFileSystem = new byte[64]; // 挂载的文件系统 + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szEvent", "bStart", "bResult", "szDiskName", + "szPartition", "szMedia", "szBus", "szMountOn", "szFileSystem", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_STORAGE_UMOUNT implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_STORAGE_UMOUNT implements Structure.ByValue + { + } + } + + // 格式化分区报警信息 + public static class STU_ALARM_EVENT_STORAGE_FORMAT extends Structure + { + public byte[] szEvent = new byte[64]; // 事件名称 + public int bStart; // FALSE - 结束格式化; TRUE - 开始格式化 + public int bResult; // FLASE - 格式化失败; TRUE - 格式化成功 + // 当且仅当 bStart = FALSE 时有效 + public byte[] szDiskName = new byte[64]; // 磁盘名称 + public byte[] szPartition = new byte[64]; // 分区名称 + public byte[] szMountOn = new byte[64]; // 挂载点 + public byte[] szFileSystem = new byte[64]; // 挂载的文件系统 + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szEvent", "bStart", "bResult", "szDiskName", + "szPartition", "szMountOn", "szFileSystem", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_STORAGE_FORMAT implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_STORAGE_FORMAT implements Structure.ByValue + { + } + } + + // 存储异常报警信息 + public static class STU_ALARM_EVENT_STORAGE_ABNORMAL extends Structure + { + public byte[] szEvent = new byte[64]; // 事件名称 + public int nAction; // 动作类型 0-停止;1-开始;2-进行中 + public int emAbnormalType; // 异常类型,EM_STORAGE_ABNORMAL_TYPE + public byte[] szDiskName = new byte[64]; // 磁盘名称 + public byte[] szWorkDir = new byte[64]; // 工作目录 + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szEvent", "nAction", "emAbnormalType", + "szDiskName", "szWorkDir", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_STORAGE_ABNORMAL implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_STORAGE_ABNORMAL implements Structure.ByValue + { + } + } + + // 存储空间低报警信息 + public static class STU_ALARM_EVENT_STORAGE_LOW_SPACE extends Structure + { + public byte[] szEvent = new byte[64]; // 事件名称 + public byte[] szDiskName = new byte[64]; // 磁盘名称 + public byte[] szWorkDir = new byte[64]; // 工作目录 + public double dTotalSpace; // 当前的总容量,单位:Byte + public double dFreeSpace; // 当前剩余容量,单位:Byte + public double dSafeSpace; // 安全空间容量,单位:Byte + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szEvent", "szDiskName", "szWorkDir", + "dTotalSpace", "dFreeSpace", "dSafeSpace", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_STORAGE_LOW_SPACE implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_STORAGE_LOW_SPACE implements Structure.ByValue + { + } + } + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //门禁访客信息 + public static class STU_DOOR_CFG_GUEST_INFO extends Structure + { + public int bValid; // 是否有效,0-无效,1-有效 + public byte[] szHost = new byte[32]; // 被访人员 + public byte[] szCorp = new byte[256]; // 工作单位 + public byte[] szPhone = new byte[64]; // 电话 + public byte[] szPlateNumber = new byte[32]; // 车牌号码 + public byte[] szCause = new byte[256]; // 来访事由 + public short nPartnerNum; // 随行人数 + public byte[] reserved1 = new byte[2]; // 字节对齐 + public STU_TIME_EX stuAccessStartTime; // 访问开始时间 + public STU_TIME_EX stuAccessEndTime; // 访问结束时间 + public byte[] reserved2 = new byte[512]; // 预留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bValid", "szHost", "szCorp", + "szPhone", "szPlateNumber", "szCause", "nPartnerNum", "reserved1", + "stuAccessStartTime", "stuAccessEndTime", "reserved2"}); + } + + public static class ByReference extends STU_DOOR_CFG_GUEST_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GUEST_INFO implements Structure.ByValue + { + } + } + + // 人员特许时间段 + public static class STU_DOOR_PERSON_CONCESSION_TIME extends Structure + { + public int nAccessType; // 通行时间段类型 0 为禁行 1 为通行 + public STU_TIME_EX stuConcessionStartTime; // 起始时间 + public STU_TIME_EX stuConcessionEndTime; // 结束时间 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nAccessType", "stuConcessionStartTime", "stuConcessionEndTime"}); + } + + public static class ByReference extends STU_DOOR_PERSON_CONCESSION_TIME implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_PERSON_CONCESSION_TIME implements Structure.ByValue + { + } + } + + // 门禁关联人员信息 + public static class STU_DOOR_PERSON_INFO extends Structure + { + public byte[] szName = new byte[128]; // 人员姓名 + public byte[] szCode = new byte[128]; // 人员编号,可作为唯一标识 + public byte[] szGroupName = new byte[128]; // 所属组名称 + public int emType; // 人员类型,EM_DOOR_PERSON_TYPE + public int emSex; // 性别,EM_SEX_TYPE + public STU_TIME stuBirthday; // 生日 + public byte[] szCertificateType = new byte[64]; // 证件类型,空则默认为 IC + public byte[] szCountry = new byte[64]; // 国别,选填 + public byte[] szProvince = new byte[64]; // 省份,选填 + public byte[] szCity = new byte[128]; // 所在城市,选填 + public STU_DOOR_CFG_GUEST_INFO stuGuestInfo; // 访客信息 + public byte[] szID = new byte[128]; // 身份证号,选填 默认为空 + public byte[] szCustomID = new byte[128]; // 用户自定义编号,选填 默认为空 + public int bDisable; // 是否禁用人员,0 - 不禁用,1 - 禁用,不设置则默认启用 + + public byte[] szCustom = new byte[128]; // 自定义描述字段,字符串,配合人脸识别能力(STU_CAPS_FACE_RECOGNIZE)中的uCustomDescriptionFunc字段使用; + // uCustomDescriptionFunc为0时,为NULL + // uCustomDescriptionFunc为1时表示梯控: + // "0" - 所有楼层; + // "1,2,3" - 非全楼层时,指定具体楼层号,中间用","分割,可带空格 + public byte[] szCustomInfo = new byte[128]; // 识别反馈自定义描述字段,配合人脸识别信息反馈 + + public int nConcessionTimeCnt; // 特许时间个数,配合pConcessionTimeAry使用 + public STU_DOOR_PERSON_CONCESSION_TIME[] stConcessionTimeAry = new STU_DOOR_PERSON_CONCESSION_TIME[NetDefs.MAX_DOOR_PERSON_CONCESSION_TIME_SIZE]; // 特许时间数组,选填,需要时需外部申请内存 + + public byte[] reserved = new byte[120]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szName", "szCode", "szGroupName", + "emType", "emSex", "stuBirthday", "szCertificateType", "szCountry", + "szProvince", "szCity", "stuGuestInfo", "szID", "szCustomID", "bDisable", + "szCustom", "szCustomInfo", "stConcessionTimeAry", "reserved"}); + } + + public static class ByReference extends STU_DOOR_PERSON_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_PERSON_INFO implements Structure.ByValue + { + } + } + + // 门禁防拆报警信息 + public static class STU_ALARM_EVENT_DOOR_TAMPER extends Structure + { + public int nChannel; // 门禁通道号 + public byte[] szEvent = new byte[64]; // 事件名称 + public int bStart; // FALSE - 停止;TRUE - 开始 + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[512]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "bStart", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_DOOR_TAMPER implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_DOOR_TAMPER implements Structure.ByValue + { + } + } + + // 门禁黑名单检测报警信息 + public static class STU_ALARM_EVENT_DOOR_BLACK_LIST extends Structure + { + public int nChannel; // 门禁通道号 + public byte[] szEvent = new byte[64]; // 事件名称 + public int emAccessType; // 访问方式,EM_DOOR_ACCESS_TYPE + public STU_DOOR_PERSON_INFO stuPerson; // 人员信息 + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[512]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "emAccessType", + "stuPerson", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_DOOR_BLACK_LIST implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_DOOR_BLACK_LIST implements Structure.ByValue + { + } + } + + // 门禁胁迫报警信息 + public static class STU_ALARM_EVENT_DOOR_COERCE extends Structure + { + public int nChannel; // 门禁通道号 + public byte[] szEvent = new byte[64]; // 事件名称 + public byte[] szCardNo = new byte[128]; // 卡号 + public STU_DOOR_PERSON_INFO stuPerson; // 人员信息 + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[512]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "szCardNo", + "stuPerson", "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_DOOR_COERCE implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_DOOR_COERCE implements Structure.ByValue + { + } + } + + // 门禁门超时未关闭报警 + public static class STU_ALARM_EVENT_DOOR_OPEN_HOLD extends Structure + { + public int nChannel; // 门禁通道号 + public byte[] szEvent = new byte[64]; // 事件名称 + public int bStart; // FALSE - 停止;TRUE - 开始 + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[512]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "bStart", + "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_DOOR_OPEN_HOLD implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_DOOR_OPEN_HOLD implements Structure.ByValue + { + } + } + + // 门禁刷卡事件 + public static class STU_ALARM_EVENT_DOOR_CARD_DETECT extends Structure + { + public int nChannel; // 门禁通道号 + public byte[] szEvent = new byte[64]; // 事件名称 + public byte[] szCardType = new byte[64]; // IC: 普通卡,ID:身份证 + public byte[] szCardNo = new byte[128]; // 卡号 + public STU_DOOR_CARD_DETECT_ID_CARD_INFO stIDInfo; // 身份证信息 + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] szCode = new byte[128]; // 此卡绑定的人员ID + public int nAccessRecord; // 通行结果 + // 0 : 未知错误 + // 1 : 通行成功 + // 2 : 访客时段不符 + // 3 : 未配置权限组 + // 4 : 未配置时段 + // 5 : 时段检验失败 + // 8 : 通行操作超时 + // 9 : 黑名单 + // 10 : 无效卡 + // 11 : 通行时段不符 + // 12 : 通行方式不符 + // 14 : 门处常开状态 + // 15 : 门处常闭状态 + // 17 : 通行成功(未佩戴安全帽) + // 18 : 通行失败(未佩戴安全帽) + // 19 : 无匹配卡 + public int nType; // -1未知,1:普通卡,2:胁迫卡,3:巡更卡,4:身份证,5:VIP,6:二维码 + public byte[] reserved = new byte[376]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "szCardType", + "szCardNo", "stIDInfo", "stuTime", "szCode", "nAccessRecord", "nType", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_DOOR_CARD_DETECT implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_DOOR_CARD_DETECT implements Structure.ByValue + { + } + } + + // 门禁强制开门报警事件 + public static class STU_ALARM_EVENT_DOOR_ILLEGAL_OPEN extends Structure + { + public int nChannel; // 门禁通道号 + public byte[] szEvent = new byte[64]; // 事件名称 + public int bStart; // FALSE - 停止;TRUE - 开始 + public STU_TIME_EX stuTime; // 事件发生时间 + public byte[] reserved = new byte[512]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "bStart", + "stuTime", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_DOOR_ILLEGAL_OPEN implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_DOOR_ILLEGAL_OPEN implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 新零售报警事件 + + // 货柜内所有货品信息上报 + public static class STU_ALARM_EVENT_GOODS_ALL_NOTIFY extends Structure + { + // 门禁通道号 + public int nChannel; + // 事件名称 + public byte[] szEvent = new byte[64]; + + // 货柜号,单摄像机监控多个货柜时按货柜编号分别上报 + public byte[] szShelveNo = new byte[64]; + // 有货品的货格数量,最大 MAX_GOODS_CONTAINER_COUNT 个 + public int nContainerCount; + // 货格及内部商品信息数组 + public STU_GOODS_CONTAINER_INFO[] stContainers = new STU_GOODS_CONTAINER_INFO[NetDefs.MAX_GOODS_CONTAINER_COUNT]; + + // 事件发生时间 + public STU_TIME_EX stuTime; + // 时区 + public byte[] szTimeZone = new byte[16]; + + // 预留参数 + public byte[] reserved = new byte[512]; + + public STU_ALARM_EVENT_GOODS_ALL_NOTIFY() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "szShelveNo", + "nContainerCount", "stContainers", "stuTime", "szTimeZone", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_GOODS_ALL_NOTIFY implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_GOODS_ALL_NOTIFY implements Structure.ByValue + { + } + } + + // 货格内商品出现替换时上报信息 + public static class STU_ALARM_EVENT_GOODS_REPLACEMENT extends Structure + { + // 门禁通道号 + public int nChannel; + // 事件名称 + public byte[] szEvent = new byte[64]; + + // 货柜号,单摄像机监控多个货柜时按货柜编号分别上报 + public byte[] szShelveNo = new byte[64]; + // 货格替换数量,最大 MAX_GOODS_CONTAINER_COUNT 个 + public int nReplaceCount; + // 货格及内部商品替换信息数组 + public STU_GOODS_CONTAINER_REPLACEMENT_INFO[] stContainers = new STU_GOODS_CONTAINER_REPLACEMENT_INFO[NetDefs.MAX_GOODS_CONTAINER_COUNT]; + + // 事件发生时间 + public STU_TIME_EX stuTime; + // 时区 + public byte[] szTimeZone = new byte[16]; + + // 预留参数 + public byte[] reserved = new byte[512]; + + public STU_ALARM_EVENT_GOODS_REPLACEMENT() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "szShelveNo", + "nReplaceCount", "stContainers", "stuTime", "szTimeZone", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_GOODS_REPLACEMENT implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_GOODS_REPLACEMENT implements Structure.ByValue + { + } + } + + // 货格内商品取走时上报信息 + public static class STU_ALARM_EVENT_GOODS_TAKEAWAY extends Structure + { + // 门禁通道号 + public int nChannel; + // 事件名称 + public byte[] szEvent = new byte[64]; + + // 货柜号,单摄像机监控多个货柜时按货柜编号分别上报 + public byte[] szShelveNo = new byte[64]; + // 货格数量,最大 MAX_GOODS_CONTAINER_COUNT 个 + public int nContainerCount; + // 货格及取走货品信息数组 + public STU_GOODS_CONTAINER_INFO[] stContainers = new STU_GOODS_CONTAINER_INFO[NetDefs.MAX_GOODS_CONTAINER_COUNT]; + + // 事件发生时间 + public STU_TIME_EX stuTime; + // 时区 + public byte[] szTimeZone = new byte[16]; + + // 预留参数 + public byte[] reserved = new byte[512]; + + public STU_ALARM_EVENT_GOODS_TAKEAWAY() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "szShelveNo", + "nContainerCount", "stContainers", "stuTime", "szTimeZone", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_GOODS_TAKEAWAY implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_GOODS_TAKEAWAY implements Structure.ByValue + { + } + } + + // 货格内新商品实物上架时上报信息 + public static class STU_ALARM_EVENT_GOODS_STACKING extends Structure + { + // 门禁通道号 + public int nChannel; + // 事件名称 + public byte[] szEvent = new byte[64]; + + // 货柜号,单摄像机监控多个货柜时按货柜编号分别上报 + public byte[] szShelveNo = new byte[64]; + // 货格数量,最大 MAX_GOODS_CONTAINER_COUNT 个 + public int nContainerCount; + // 货格及新上架货品信息数组 + public STU_GOODS_CONTAINER_INFO[] stContainers = new STU_GOODS_CONTAINER_INFO[NetDefs.MAX_GOODS_CONTAINER_COUNT]; + + // 事件发生时间 + public STU_TIME_EX stuTime; + // 时区 + public byte[] szTimeZone = new byte[16]; + + // 预留参数 + public byte[] reserved = new byte[512]; + + public STU_ALARM_EVENT_GOODS_STACKING() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "szShelveNo", + "nContainerCount", "stContainers", "stuTime", "szTimeZone", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_GOODS_STACKING implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_GOODS_STACKING implements Structure.ByValue + { + } + } + + // 货柜无货品时上报信息 + public static class STU_ALARM_EVENT_GOODS_EMPTY extends Structure + { + // 门禁通道号 + public int nChannel; + // 事件名称 + public byte[] szEvent = new byte[64]; + // FALSE - 停止;TRUE - 开始 + public int bStart; + + // 货柜号,单摄像机监控多个货柜时按货柜编号分别上报 + public byte[] szShelveNo = new byte[64]; + + // 事件发生时间 + public STU_TIME_EX stuTime; + // 时区 + public byte[] szTimeZone = new byte[16]; + + // 预留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "bStart", + "szShelveNo", "stuTime", "szTimeZone", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_GOODS_EMPTY implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_GOODS_EMPTY implements Structure.ByValue + { + } + } + + // 货品未正确完整摆放在货格内时上报信息 + public static class STU_ALARM_EVENT_GOODS_OUT_OF_REGION extends Structure + { + // 门禁通道号 + public int nChannel; + // 事件名称 + public byte[] szEvent = new byte[64]; + // FALSE - 停止;TRUE - 开始 + public int bStart; + + // 货柜号,单摄像机监控多个货柜时按货柜编号分别上报 + public byte[] szShelveNo = new byte[64]; + // 未正确摆放在货格内的货品数量,最大 MAX_GOODS_CONTAINER_COUNT * MAX_GOODS_IN_CONTAINER_COUNT 个 + public int nGoodsOutCount; + // 货格内商品信息数组 + public STU_GOODS_OUT_OF_REGION_INFO[] stGoodsOutOfRegionInfos = new STU_GOODS_OUT_OF_REGION_INFO[NetDefs.MAX_GOODS_CONTAINER_COUNT * NetDefs.MAX_GOODS_IN_CONTAINER_COUNT]; + + // 事件发生时间 + public STU_TIME_EX stuTime; + // 时区 + public byte[] szTimeZone = new byte[16]; + + // 预留参数 + public byte[] reserved = new byte[512]; + + public STU_ALARM_EVENT_GOODS_OUT_OF_REGION() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "bStart", + "szShelveNo", "nGoodsOutCount", "stGoodsOutOfRegionInfos", + "stuTime", "szTimeZone", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_GOODS_OUT_OF_REGION implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_GOODS_OUT_OF_REGION implements Structure.ByValue + { + } + } + + // 同一货格内商品不一致时上报信息 + public static class STU_ALARM_EVENT_GOODS_DIFFERENT extends Structure + { + // 门禁通道号 + public int nChannel; + // 事件名称 + public byte[] szEvent = new byte[64]; + // FALSE - 停止;TRUE - 开始 + public int bStart; + + // 货柜号,单摄像机监控多个货柜时按货柜编号分别上报 + public byte[] szShelveNo = new byte[64]; + // 货品不一致的货格数量,最大 MAX_GOODS_CONTAINER_COUNT 个 + public int nContainerCount; + // 货品不一致的货格及货品信息数组 + public STU_GOODS_CONTAINER_INFO[] stContainers = new STU_GOODS_CONTAINER_INFO[NetDefs.MAX_GOODS_CONTAINER_COUNT]; + + // 事件发生时间 + public STU_TIME_EX stuTime; + // 时区 + public byte[] szTimeZone = new byte[16]; + + // 预留参数 + public byte[] reserved = new byte[512]; + + public STU_ALARM_EVENT_GOODS_DIFFERENT() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "bStart", + "szShelveNo", "nContainerCount", "stContainers", "stuTime", + "szTimeZone", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_GOODS_DIFFERENT implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_GOODS_DIFFERENT implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + //拨号事件 + public static class STU_ALARM_EVENT_DIAL_UP extends Structure + { + // 门禁通道号 + public int nChannel; + // 事件名称 + public byte[] szEvent = new byte[64]; + + // 呼叫全局编号,平台用于关联呼叫过程 + public byte[] szUserID = new byte[128]; + + // 公共信息 + // 设备地址 + public byte[] szMachineAddress = new byte[128]; + // 设备序列号 + public byte[] szSerialNo = new byte[128]; + + // 事件发生时间 + public STU_TIME_EX stuTime; + // 时区 + public byte[] szTimeZone = new byte[16]; + + // 预留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "szUserID", "szMachineAddress", + "szSerialNo", "stuTime", "szTimeZone", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_DIAL_UP implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_DIAL_UP implements Structure.ByValue + { + } + } + + // 挂断事件 + public static class STU_ALARM_EVENT_HUNG_UP extends Structure + { + // 门禁通道号 + public int nChannel; + // 事件名称 + public byte[] szEvent = new byte[64]; + + // 呼叫全局编号,平台用于关联呼叫过程 + public byte[] szCallGuid = new byte[64]; + + // 业主信息,呼叫了谁 + // Sip号 + public byte[] szSipCode = new byte[64]; + // 姓名 + public byte[] szName = new byte[128]; + // 手机号码 + public byte[] szTel = new byte[64]; + + // 公共信息 + // 设备地址 + public byte[] szMachineAddress = new byte[128]; + // 设备序列号 + public byte[] szSerialNo = new byte[128]; + + // 事件发生时间 + public STU_TIME_EX stuTime; + // 时区 + public byte[] szTimeZone = new byte[16]; + + // 预留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "szCallGuid", "szSipCode", "szName", "szTel", "szMachineAddress", + "szSerialNo", "stuTime", "szTimeZone", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_HUNG_UP implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_HUNG_UP implements Structure.ByValue + { + } + } + + // 按键通知事件 + public static class STU_ALARM_EVENT_DIAL_KEYBOARD_MESSAGE extends Structure + { + // 门禁通道号 + public int nChannel; + // 事件名称 + public byte[] szEvent = new byte[64]; + + // 键值 + public byte[] szKey = new byte[16]; + + // 事件发生时间 + public STU_TIME_EX stuTime; + // 时区 + public byte[] szTimeZone = new byte[16]; + + // 预留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "szKey", "stuTime", "szTimeZone", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_DIAL_KEYBOARD_MESSAGE implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_DIAL_KEYBOARD_MESSAGE implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 烟雾报警 + public static class STU_ALARM_EVENT_FIRE_SMOKE_ALARM extends Structure + { + // 门禁通道号 + public int nChannel; + + // 事件名称 + public byte[] szEvent = new byte[64]; + + // 事件发生时间 + public STU_TIME_EX stuTime; + + // 时区 + public byte[] szTimeZone = new byte[16]; + + // 预留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "stuTime", "szTimeZone", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_FIRE_SMOKE_ALARM implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_FIRE_SMOKE_ALARM implements Structure.ByValue + { + } + } + + // 非法动火 + public static class STU_ALARM_EVENT_FIRE_ILLEGAL_FIRE_OPERATION extends Structure + { + // 门禁通道号 + public int nChannel; + + // 事件名称 + public byte[] szEvent = new byte[64]; + + // 事件发生时间 + public STU_TIME_EX stuTime; + + // 时区 + public byte[] szTimeZone = new byte[16]; + + // 预留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "stuTime", "szTimeZone", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_FIRE_ILLEGAL_FIRE_OPERATION implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_FIRE_ILLEGAL_FIRE_OPERATION implements Structure.ByValue + { + } + } + + // 火警 + public static class STU_ALARM_EVENT_FIRE_ALARM extends Structure + { + // 门禁通道号 + public int nChannel; + + // 事件名称 + public byte[] szEvent = new byte[64]; + + // 事件发生时间 + public STU_TIME_EX stuTime; + + // 时区 + public byte[] szTimeZone = new byte[16]; + + // 预留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "stuTime", "szTimeZone", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_FIRE_ALARM implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_FIRE_ALARM implements Structure.ByValue + { + } + } + + // 操作人数不合规 + public static class STU_ALARM_EVENT_FIRE_OPERATOR_NONCOMPLIANCE extends Structure + { + // 门禁通道号 + public int nChannel; + + // 事件名称 + public byte[] szEvent = new byte[64]; + + // 在场人数 + public int nPeopleNum; + + // 合规在场人数 + public int nRegularPeopleNum; + + // 事件发生时间 + public STU_TIME_EX stuTime; + + // 时区 + public byte[] szTimeZone = new byte[16]; + + // 预留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "nPeopleNum", "nRegularPeopleNum", "stuTime", "szTimeZone", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_FIRE_OPERATOR_NONCOMPLIANCE implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_FIRE_OPERATOR_NONCOMPLIANCE implements Structure.ByValue + { + } + } + + // 烟雾报警 + public static class STU_ALARM_EVENT_FIRE_SMOG_ALARM extends Structure + { + // 门禁通道号 + public int nChannel; + + // 事件名称 + public byte[] szEvent = new byte[64]; + + // 事件发生时间 + public STU_TIME_EX stuTime; + + // 时区 + public byte[] szTimeZone = new byte[16]; + + // 预留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szEvent", "stuTime", "szTimeZone", "reserved"}); + } + + public static class ByReference extends STU_ALARM_EVENT_FIRE_SMOG_ALARM implements Structure.ByReference + { + } + + public static class ByValue extends STU_ALARM_EVENT_FIRE_SMOG_ALARM implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 云台相关结构体 + // 云台预置点信息,预置点编号唯一,名称可以重复 + public static class STU_PTZ_PRESET extends Structure + { + public int nIndex; // 预置点编号,从 1 开始 + public int nType; // 预置点类型,0-普通预置点,1-设置过智能规则的预置点 + public byte[] szName = new byte[32]; // 预置点名称 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nIndex", "nType", "szName", "reserved"}); + } + + public static class ByReference extends STU_PTZ_PRESET implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_PRESET implements Structure.ByValue + { + } + } + + // 巡航线路信息 + public static class STU_PTZ_PRESET_TOUR extends Structure + { + public int nIndex; // 巡航线路编号,从 1 开始 + public byte[] szName = new byte[32]; // 巡航线路名称 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nIndex", "szName", "reserved"}); + } + + public static class ByReference extends STU_PTZ_PRESET_TOUR implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_PRESET_TOUR implements Structure.ByValue + { + } + } + + // 云台巡航线路节点点信息 + public static class STU_PTZ_PRESET_TOUR_NODE extends Structure + { + public int nIndex; // 预置点编号,从 1 开始 + public int nDuration; // 在该预置点停留的事件,单位:秒 + public int emSpeed; // 到达预置点的转动速度,等级 1-10,EM_PTZ_SPEED_L10 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nIndex", "nDuration", "emSpeed"}); + } + + public static class ByReference extends STU_PTZ_PRESET_TOUR_NODE implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_PRESET_TOUR_NODE implements Structure.ByValue + { + } + } + + // 云台精确定位参数 + public static class STU_PTZ_MOVE_ABSOLUTE_PARAM extends Structure + { + public short nX; // 水平角度 0-360 + public short nY; // 垂直角度 -5-90 + public byte nZ; // 变倍角度 1-128 + public byte[] reserved = new byte[3]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nX", "nY", "nZ", "reserved"}); + } + + public static class ByReference extends STU_PTZ_MOVE_ABSOLUTE_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_MOVE_ABSOLUTE_PARAM implements Structure.ByValue + { + } + } + + // 云台划屏定位参数 + public static class STU_PTZ_MOVE_RECT_PARAM extends Structure + { + public STU_POINT stuStartPt; // 起始点 + public STU_POINT stuEndPt; // 结束点 + public byte[] reserved = new byte[16]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stuStartPt", "stuEndPt", "reserved"}); + } + + public static class ByReference extends STU_PTZ_MOVE_RECT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_MOVE_RECT_PARAM implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////// + + // 开始巡航参数 + public static class STU_PTZ_EXP_PRESET_TOUR_START_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nIndex; // 巡航线路编号,从 1 开始 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_EXP_PRESET_TOUR_START_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_EXP_PRESET_TOUR_START_PARAM implements Structure.ByValue + { + } + } + + // 停止巡航参数 + public static class STU_PTZ_EXP_PRESET_TOUR_STOP_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nIndex; // 巡航线路编号,从 1 开始 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_EXP_PRESET_TOUR_STOP_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_EXP_PRESET_TOUR_STOP_PARAM implements Structure.ByValue + { + } + } + + // 开始记录巡航轨迹参数 + public static class STU_PTZ_EXP_RECORD_PATTERN_START_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nIndex; // 巡迹线路编号,从 1 开始 + public int emPattern; // 巡迹模式,EM_PTZ_EXP_PATTERN + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nIndex", "emPattern", "reserved"}); + } + + public static class ByReference extends STU_PTZ_EXP_RECORD_PATTERN_START_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_EXP_RECORD_PATTERN_START_PARAM implements Structure.ByValue + { + } + } + + // 停止记录巡航轨迹参数 + public static class STU_PTZ_EXP_RECORD_PATTERN_STOP_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nIndex; // 巡迹线路编号,从 1 开始 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_EXP_RECORD_PATTERN_STOP_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_EXP_RECORD_PATTERN_STOP_PARAM implements Structure.ByValue + { + } + } + + // 开始巡迹参数 + public static class STU_PTZ_EXP_PATTERN_START_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nIndex; // 巡迹线路编号,从 1 开始 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_EXP_PATTERN_START_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_EXP_PATTERN_START_PARAM implements Structure.ByValue + { + } + } + + // 停止巡迹参数 + public static class STU_PTZ_EXP_PATTERN_STOP_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nIndex; // 巡迹线路编号,从 1 开始 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_EXP_PATTERN_STOP_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_EXP_PATTERN_STOP_PARAM implements Structure.ByValue + { + } + } + + // 设置线性扫描边界参数 + public static class STU_PTZ_EXP_SCAN_RANGE_SET_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nIndex; // 线性扫描编号,从 1 开始 + public int emBorder; // 需设置的边界类型,EM_PTZ_SCAN_BORDER + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nIndex", "emBorder", "reserved"}); + } + + public static class ByReference extends STU_PTZ_EXP_SCAN_RANGE_SET_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_EXP_SCAN_RANGE_SET_PARAM implements Structure.ByValue + { + } + } + + // 开始线性扫描参数 + public static class STU_PTZ_EXP_SCAN_START_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nIndex; // 线性扫描编号,从 1 开始 + public int emSpeed; // 线性扫描速度,EM_PTZ_SPEED_L8 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nIndex", "emSpeed", "reserved"}); + } + + public static class ByReference extends STU_PTZ_EXP_SCAN_START_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_EXP_SCAN_START_PARAM implements Structure.ByValue + { + } + } + + // 停止线性扫描参数 + public static class STU_PTZ_EXP_SCAN_STOP_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nIndex; // 线性扫描编号,从 1 开始 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_EXP_SCAN_STOP_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_EXP_SCAN_STOP_PARAM implements Structure.ByValue + { + } + } + + // 移动到预置点输入参数 + public static class STU_PTZ_EXP_PRESET_GOTO_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nIndex; // 预置点编号,从 1 开始 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_EXP_PRESET_GOTO_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_EXP_PRESET_GOTO_PARAM implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////// + + // 获取所有预置点输入参数 + public static class STU_PTZ_CFG_PRESETS_GET_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESETS_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESETS_GET_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取所有预置点输出参数 + public static class STU_PTZ_CFG_PRESETS_GET_OUT_PARAM extends Structure + { + public int nPresetCount; // 实际获取的预置点个数 + public STU_PTZ_PRESET[] stuPresetArray = new STU_PTZ_PRESET[NetDefs.MAX_PTZ_PRESET_NUM]; // 预置点信息 + public byte[] reserved = new byte[64]; // 保留参数 + + public STU_PTZ_CFG_PRESETS_GET_OUT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nPresetCount", "stuPresetArray", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESETS_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESETS_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 获取指定编号的预置点信息输入参数 + public static class STU_PTZ_CFG_PRESET_GET_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nIndex; // 需获取信息的预置点编号 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_GET_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取指定编号的预置点信息输出参数 + public static class STU_PTZ_CFG_PRESET_GET_OUT_PARAM extends Structure + { + public STU_PTZ_PRESET stuPreset; // 获取的预置点信息 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stuPreset", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 增加预置点输入参数 + public static class STU_PTZ_CFG_PRESET_ADD_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public byte[] szName = new byte[32]; // 预置点名称 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "szName", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_ADD_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_ADD_IN_PARAM implements Structure.ByValue + { + } + } + + // 增加预置点输出参数 + public static class STU_PTZ_CFG_PRESET_ADD_OUT_PARAM extends Structure + { + public int nIndex; // 追加的预置点编号 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_ADD_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_ADD_OUT_PARAM implements Structure.ByValue + { + } + } + + // 插入预置点输入参数 + // 如果预置点达到最大值,则失败; + // 如果不存在预置点,则直接添加;如果已存在预置点,则根据 bOverwrite 是否覆盖原预置点信息,若不覆盖则返回失败; + public static class STU_PTZ_CFG_PRESET_INSERT_IN_PARAM extends Structure + { + public int bOverwrite; // 是否覆盖已存在的预置点 + public int nChannel; // 云台通道号,从 0 开始 + public int nIndex; // 需插入的预置点编号 + public byte[] szName = new byte[32]; // 预置点名称 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bOverwrite", "nChannel", "nIndex", "szName", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_INSERT_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_INSERT_IN_PARAM implements Structure.ByValue + { + } + } + + // 插入预置点输出参数 + public static class STU_PTZ_CFG_PRESET_INSERT_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_INSERT_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_INSERT_OUT_PARAM implements Structure.ByValue + { + } + } + + // 重置预置点输入参数 + // 预置点编号需存在,不存在则返回失败 + public static class STU_PTZ_CFG_PRESET_RESET_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nIndex; // 需重置的预置点编号 + public byte[] szName = new byte[32]; // 预置点名称 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nIndex", "szName", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_RESET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_RESET_IN_PARAM implements Structure.ByValue + { + } + } + + // 重置预置点输出参数 + public static class STU_PTZ_CFG_PRESET_RESET_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_RESET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_RESET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 移除预置点输入参数 + public static class STU_PTZ_CFG_PRESET_REMOVE_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nIndex; // 预置点编号,从 1 开始 + // 预置点编号,从 1 开始 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_REMOVE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_REMOVE_IN_PARAM implements Structure.ByValue + { + } + } + + // 移除预置点输出参数 + public static class STU_PTZ_CFG_PRESET_REMOVE_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_REMOVE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_REMOVE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 清除所有预置点输入参数 + public static class STU_PTZ_CFG_PRESETS_CLEAR_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESETS_CLEAR_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESETS_CLEAR_IN_PARAM implements Structure.ByValue + { + } + } + + // 清除所有预置点输出参数 + public static class STU_PTZ_CFG_PRESETS_CLEAR_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESETS_CLEAR_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESETS_CLEAR_OUT_PARAM implements Structure.ByValue + { + } + } + + // 获取已经设置的巡航线路列表输入参数 + public static class STU_PTZ_CFG_PRESET_TOURS_GET_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOURS_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOURS_GET_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取已经设置的巡航线路列表输出参数 + public static class STU_PTZ_CFG_PRESET_TOURS_GET_OUT_PARAM extends Structure + { + public int nTourCount; // 巡航线路数目 + public STU_PTZ_PRESET_TOUR[] stuTourArray = new STU_PTZ_PRESET_TOUR[NetDefs.MAX_PTZ_PRESET_TOUR_NUM]; // 巡航线路信息列表 + public byte[] reserved = new byte[128]; // 保留参数 + + public STU_PTZ_CFG_PRESET_TOURS_GET_OUT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nTourCount", "stuTourArray", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOURS_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOURS_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 获取指定编号的已设置的巡航线路输入参数 + public static class STU_PTZ_CFG_PRESET_TOUR_GET_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nIndex; // 巡航线路编号 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_GET_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取指定编号的已设置的巡航线路输出参数 + public static class STU_PTZ_CFG_PRESET_TOUR_GET_OUT_PARAM extends Structure + { + public STU_PTZ_PRESET_TOUR stuPresetTour; // 巡航线路信息 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stuPresetTour", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 追加巡航线路输入参数,追加的巡航线路在列表末尾 + public static class STU_PTZ_CFG_PRESET_TOUR_ADD_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public byte[] szName = new byte[32]; // 巡航线路编号 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_ADD_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_ADD_IN_PARAM implements Structure.ByValue + { + } + } + + // 追加巡航线路输出参数 + public static class STU_PTZ_CFG_PRESET_TOUR_ADD_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_ADD_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_ADD_OUT_PARAM implements Structure.ByValue + { + } + } + + // 插入巡航线路输入参数 + // 如果巡航线路已存在,如果 bOverwrite == TRUE, 则覆盖原线路;如果 bOverwrite == FALSE, 则返回失败 + // 如果巡航线路不存在,则直接以该编号添加 + public static class STU_PTZ_CFG_PRESET_TOUR_INSERT_IN_PARAM extends Structure + { + public int bOverwrite; // 是否覆盖 + public int nChannel; // 云台通道号,从 0 开始 + public int nIndex; // 巡航线路编号,从 1 开始 + public byte[] szName = new byte[32]; // 巡航线路名称 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bOverwrite", "nChannel", "nIndex", "szName", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_INSERT_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_INSERT_IN_PARAM implements Structure.ByValue + { + } + } + + // 插入巡航吸纳路输出参数 + public static class STU_PTZ_CFG_PRESET_TOUR_INSERT_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_INSERT_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_INSERT_OUT_PARAM implements Structure.ByValue + { + } + } + + // 重置巡航线路输入参数 + // 如果巡航线路不存在则返回失败 + public static class STU_PTZ_CFG_PRESET_TOUR_RESET_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nIndex; // 巡航线路编号,从 1 开始 + public byte[] szName = new byte[32]; // 巡航线路名称 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bOverwrite", "nChannel", "nIndex", "szName", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_RESET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_RESET_IN_PARAM implements Structure.ByValue + { + } + } + + // 重置巡航线路输出参数 + public static class STU_PTZ_CFG_PRESET_TOUR_RESET_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_RESET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_RESET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 删除指定编号的巡航线路输入参数 + public static class STU_PTZ_CFG_PRESET_TOUR_REMOVE_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nIndex; // 巡航线路编号,从 1 开始 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_REMOVE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_REMOVE_IN_PARAM implements Structure.ByValue + { + } + } + + // 删除指定编号的巡航线路输入参数 + public static class STU_PTZ_CFG_PRESET_TOUR_REMOVE_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_REMOVE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_REMOVE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 清除所有巡航线路输入参数 + public static class STU_PTZ_CFG_PRESET_TOURS_CLEAR_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOURS_CLEAR_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOURS_CLEAR_IN_PARAM implements Structure.ByValue + { + } + } + + // 清除所有巡航线路输出参数 + public static class STU_PTZ_CFG_PRESET_TOURS_CLEAR_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOURS_CLEAR_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOURS_CLEAR_OUT_PARAM implements Structure.ByValue + { + } + } + + // 获取巡航线路的预置点列表输入参数 + public static class STU_PTZ_CFG_PRESET_TOUR_NODES_GET_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nIndex; // 巡航线路编号,从 1 开始 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_NODES_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_NODES_GET_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取巡航线路的预置点列表输出参数 + public static class STU_PTZ_CFG_PRESET_TOUR_NODES_GET_OUT_PARAM extends Structure + { + public int nNodeCount; // 巡航线路节点点个数 + // 巡航线路节点数组 + public STU_PTZ_PRESET_TOUR_NODE[] stuNodeArray = new STU_PTZ_PRESET_TOUR_NODE[NetDefs.MAX_PTZ_PRESET_TOUR_NODE_NUM]; + public byte[] reserved = new byte[64]; // 保留参数 + + public STU_PTZ_CFG_PRESET_TOUR_NODES_GET_OUT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nNodeCount", "stuNodeArray", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_NODES_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_NODES_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 增加巡航预置点输入参数 + // 默认添加到巡航线路上的最后位置 + public static class STU_PTZ_CFG_PRESET_TOUR_NODE_ADD_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nTourIndex; // 巡航线路编号,从 1 开始 + public STU_PTZ_PRESET_TOUR_NODE stuNode; // 需添加的巡航线路中的预置点信息 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nTourIndex", "stuNode", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_NODE_ADD_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_NODE_ADD_IN_PARAM implements Structure.ByValue + { + } + } + + // 增加巡航预置点输出参数 + public static class STU_PTZ_CFG_PRESET_TOUR_NODE_ADD_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_NODE_ADD_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_NODE_ADD_OUT_PARAM implements Structure.ByValue + { + } + } + + // 重置巡航预置点输入参数 + public static class STU_PTZ_CFG_PRESET_TOUR_NODE_RESET_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nTourIndex; // 巡航线路编号,从 1 开始 + public int nPosition; // 在巡航线路中重置的预置点的位置 + public STU_PTZ_PRESET_TOUR_NODE stuNode; // 需重置的巡航线路中的预置点信息 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nTourIndex", "nPosition", "stuNode", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_NODE_RESET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_NODE_RESET_IN_PARAM implements Structure.ByValue + { + } + } + + // 插入巡航预置点输出参数 + public static class STU_PTZ_CFG_PRESET_TOUR_NODE_RESET_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_NODE_RESET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_NODE_RESET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 删除巡航线路中的预置点输入参数 + public static class STU_PTZ_CFG_PRESET_TOUR_NODE_REMOVE_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nTourIndex; // 巡航线路编号,从 1 开始 + public int nPosition; // 要删除的线路上点的序号, 是预置点的索引号 + public int nPresetIndex; // 要删除的预置点编号 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nTourIndex", "nPosition", "nPresetIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_NODE_REMOVE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_NODE_REMOVE_IN_PARAM implements Structure.ByValue + { + } + } + + // 删除巡航线路中的预置点输出参数 + public static class STU_PTZ_CFG_PRESET_TOUR_NODE_REMOVE_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_NODE_REMOVE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_NODE_REMOVE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 清除巡航线路中的预置点输入参数 + public static class STU_PTZ_CFG_PRESET_TOUR_NODES_CLEAR_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int nTourIndex; // 巡航线路编号,从 1 开始 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nTourIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_NODES_CLEAR_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_NODES_CLEAR_IN_PARAM implements Structure.ByValue + { + } + } + + // 清除巡航线路中的预置点输出参数 + public static class STU_PTZ_CFG_PRESET_TOUR_NODES_CLEAR_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_PRESET_TOUR_NODES_CLEAR_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_PRESET_TOUR_NODES_CLEAR_OUT_PARAM implements Structure.ByValue + { + } + } + + ///////////////////////////////////////////// + // 云台守望配置获取输入参数 + public static class STU_PTZ_CFG_KEEP_WATCH_GET_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_KEEP_WATCH_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_KEEP_WATCH_GET_IN_PARAM implements Structure.ByValue + { + } + } + + // 云台守望配置获取输出参数 + public static class STU_PTZ_CFG_KEEP_WATCH_GET_OUT_PARAM extends Structure + { + public int bEnable; // 是否使能 + public int nTimerInterval; // 定时时间, 单位:分钟 + public int emAction; // 动作类型,EM_PTZ_KEEP_WATCH_ACTION + public int nPresetIndex; // 预置点编号,当 emAction == PTZ_KEEP_WATCH_ACTION_PRESET 有效 + public int nTourIndex; // 巡航线路编号,当 emAction == PTZ_KEEP_WATCH_ACTION_PRESET_TOUR 有效 + public int nScanIndex; // 线性扫描编号,当 emAction == PTZ_KEEP_WATHC_ACTION_SCAN 有效 + public int nPatternIndex; // 巡迹编号,当 emAction == PTZ_KEEP_WATCH_ACTION_PATTERN 有效 + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "nTimerInterval", "emAction", + "nPresetIndex", "nTourIndex", "nScanIndex", "nPatternIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_KEEP_WATCH_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_KEEP_WATCH_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 云台守望配置设置输入参数 + public static class STU_PTZ_CFG_KEEP_WATCH_SET_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public int bEnable; // 是否使能 + public int nTimerInterval; // 定时时间, 单位:分钟 + public int emAction; // 动作类型,EM_PTZ_KEEP_WATCH_ACTION + public int nIndex; // 当 emAction == PTZ_KEEP_WATCH_ACTION_NONE,无效 + // 当 emAction == PTZ_KEEP_WATCH_ACTION_PRESET,为预置点编号,从 1 开始 + // 当 emAction == PTZ_KEEP_WATCH_ACTION_PRESET_TOUR,为巡航线路编号,从 1 开始 + // 当 emAction == PTZ_KEEP_WATCH_ACTION_SCAN,为线性扫描编号,从 1 开始 + // 当 emAction == PTZ_KEEP_WATCH_ACTION_PATTERN,为巡迹编号,从 1 开始 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "bEnable", "nTimerInterval", + "emAction", "nIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_KEEP_WATCH_SET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_KEEP_WATCH_SET_IN_PARAM implements Structure.ByValue + { + } + } + + // 云台守望配置设置输出参数 + public static class STU_PTZ_CFG_KEEP_WATCH_SET_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_KEEP_WATCH_SET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_KEEP_WATCH_SET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 一天中的时间段 + public static class STU_DAY_TIME_SECTION_SCHEDULE extends Structure + { + public STU_TIME_SECTION_SCHEDULE[] stuTimeSection = new STU_TIME_SECTION_SCHEDULE[NetDefs.TIME_SECTION]; + + public STU_DAY_TIME_SECTION_SCHEDULE() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stuTimeSection"}); + } + + public static class ByReference extends STU_DAY_TIME_SECTION_SCHEDULE implements Structure.ByReference + { + } + + public static class ByValue extends STU_DAY_TIME_SECTION_SCHEDULE implements Structure.ByValue + { + } + } + + // 一周中的时间段 + public static class STU_WEEK_TIME_SECTION_SCHEDULE extends Structure + { + public STU_DAY_TIME_SECTION_SCHEDULE[] stuTimeDay = new STU_DAY_TIME_SECTION_SCHEDULE[NetDefs.WEEK_SECTION]; + + public STU_WEEK_TIME_SECTION_SCHEDULE() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stuTimeDay"}); + } + + public static class ByReference extends STU_WEEK_TIME_SECTION_SCHEDULE implements Structure.ByReference + { + } + + public static class ByValue extends STU_WEEK_TIME_SECTION_SCHEDULE implements Structure.ByValue + { + } + } + + // 定时任务信息 + public static class STU_PTZ_SCHEDULE_TASK_INFO extends Structure + { + public int bEnable; // 是否是能定时任务 + public int emAction; // 任务动作类型,EM_PTZ_SCHEDULE_TASK_ACTION + public int nPresetIndex; // 预置点编号,当 emAction == PTZ_SCHEDULE_TASK_ACTION_PRESET 有效 + public int nTourIndex; // 巡航线路编号,当 emAction == PTZ_SCHEDULE_TASK_ACTION_PRESET_TOUR 有效 + public int nScanIndex; // 线性扫描编号,当 emAction == PTZ_SCHEDULE_TASK_ACTION_SCAN 有效 + public int nPatternIndex; // 巡迹编号,当 emAction == PTZ_SCHEDULE_TASK_ACTION_PATTERN 有效 + public int nAutoHomingTime; // 自动归位时间,单位:秒,范围:5-3600 + public STU_WEEK_TIME_SECTION_SCHEDULE stuWeekTimeSection; // 一周的时间段 + public byte[] reserved = new byte[128]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "nTimerInterval", "emAction", + "nPresetIndex", "nTourIndex", "nScanIndex", "nPatternIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_SCHEDULE_TASK_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_SCHEDULE_TASK_INFO implements Structure.ByValue + { + } + } + + // 云台定时任务配置获取输入参数 + public static class STU_PTZ_CFG_SCHEDULE_TASKS_GET_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_SCHEDULE_TASKS_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_SCHEDULE_TASKS_GET_IN_PARAM implements Structure.ByValue + { + } + } + + // 云台定时任务配置获取输出参数 + public static class STU_PTZ_CFG_SCHEDULE_TASKS_GET_OUT_PARAM extends Structure + { + // 任务信息 + public STU_PTZ_SCHEDULE_TASK_INFO[] stuTask = new STU_PTZ_SCHEDULE_TASK_INFO[NetDefs.MAX_PTZ_SCHEDULE_TASK_NUM]; + public byte[] reserved = new byte[256]; // 保留参数 + + public STU_PTZ_CFG_SCHEDULE_TASKS_GET_OUT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stuTask", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_SCHEDULE_TASKS_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_SCHEDULE_TASKS_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 云台定时任务配置设置输入参数 + public static class STU_PTZ_CFG_SCHEDULE_TASKS_SET_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号,从 0 开始 + // 定时任务信息 + public STU_PTZ_SCHEDULE_TASK_INFO[] stuTaskInfo = new STU_PTZ_SCHEDULE_TASK_INFO[NetDefs.MAX_PTZ_SCHEDULE_TASK_NUM]; + public byte[] reserved = new byte[128]; // 保留参数 + + public STU_PTZ_CFG_SCHEDULE_TASKS_SET_IN_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "stuTaskInfo", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_SCHEDULE_TASKS_SET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_SCHEDULE_TASKS_SET_IN_PARAM implements Structure.ByValue + { + } + } + + // 云台定时任务配置设置输出参数 + public static class STU_PTZ_CFG_SCHEDULE_TASKS_SET_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_SCHEDULE_TASKS_SET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_SCHEDULE_TASKS_SET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 获取线性扫描路径使能信息输入参数 + public static class STU_PTZ_CFG_AUTO_SCAN_ENABLE_GET_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_AUTO_SCAN_ENABLE_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_AUTO_SCAN_ENABLE_GET_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取线性扫描路径使能信息输出参数 + public static class STU_PTZ_CFG_AUTO_SCAN_ENABLE_GET_OUT_PARAM extends Structure + { + public int nEanbleCount; // 使能位个数 + // 使能信息, 数组下标 + 1 即是线性扫秒路径编号 + public int[] bEnableArr = new int[NetDefs.MAX_PTZ_AUTO_SCAN_NUM]; + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nEanbleCount", "bEnableArr", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_AUTO_SCAN_ENABLE_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_AUTO_SCAN_ENABLE_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 移除线性扫描路径输入参数 + public static class STU_PTZ_CFG_AUTO_SCAN_REMOVE_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号 + public int nIndex; // 需移除的线性扫描路径编号, + // 0-移除所有,1-MAX_PTZ_AUTO_SCAN_NUM 则移除指定编号的线性扫描路径 + public byte[] reserved = new byte[32]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_AUTO_SCAN_REMOVE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_AUTO_SCAN_REMOVE_IN_PARAM implements Structure.ByValue + { + } + } + + // 移除线性扫描路径输出参数 + public static class STU_PTZ_CFG_AUTO_SCAN_REMOVE_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_AUTO_SCAN_REMOVE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_AUTO_SCAN_REMOVE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 获取巡迹路径使能信息输入参数 + public static class STU_PTZ_CFG_AUTO_PATTERN_ENABLE_GET_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_AUTO_PATTERN_ENABLE_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_AUTO_PATTERN_ENABLE_GET_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取巡迹路径使能信息输出参数 + public static class STU_PTZ_CFG_AUTO_PATTERN_ENABLE_GET_OUT_PARAM extends Structure + { + public int nEanbleCount; // 使能位个数 + // 使能信息,数组下标 + 1 即是巡迹路径编号 + public int[] bEnableArr = new int[NetDefs.MAX_PTZ_AUTO_PATTERN_NUM]; + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nEanbleCount", "bEnableArr", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_AUTO_PATTERN_ENABLE_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_AUTO_PATTERN_ENABLE_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 移除巡迹路径输入参数 + public static class STU_PTZ_CFG_AUTO_PATTERN_REMOVE_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号 + public int nIndex; // 需移除的线性扫描路径编号, + // 0-移除所有,1-MAX_PTZ_AUTO_SCAN_NUM 则移除指定编号的巡迹路径 + public byte[] reserved = new byte[32]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "nIndex", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_AUTO_PATTERN_REMOVE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_AUTO_PATTERN_REMOVE_IN_PARAM implements Structure.ByValue + { + } + } + + // 移除巡迹路径输出参数 + public static class STU_PTZ_CFG_AUTO_PATTERN_REMOVE_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_AUTO_PATTERN_REMOVE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_AUTO_PATTERN_REMOVE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 获取云台状态信息输入参数 + public static class STU_PTZ_CFG_STATUS_GET_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号 + public byte[] reserved = new byte[128]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_STATUS_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_STATUS_GET_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取云台状态信息输出参数 + public static class STU_PTZ_CFG_STATUS_GET_OUT_PARAM extends Structure + { + public int nTotalRunTime; // 云台总运行时间,单位:分钟 + public int nIcrCount; // ICR切换次数 + public int nIrisSwitchCount; // IRIS切换次数 + public int nHCircleCount; // 云台水平转动圈数 + public int nVCircleCount; // 云台垂直转动圈数 + public int nVMotorSwitchCount; // 云台垂直电机方向的切换次数 + public int nZoomMotorSwitchCount; // 变倍马达方向的切换次数 + public int nFocusMotorSwitchCount; // 变焦马达方向的切换次数 + public byte[] reserved = new byte[1024]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nTotalRunTime", "nIcrCount", "nIrisSwitchCount", + "nHCircleCount", "nVCircleCount", "nVMotorSwitchCount", "nZoomMotorSwitchCount", + "nFocusMotorSwitchCount", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_STATUS_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_STATUS_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 获取当前云台标定绝对位置信息输入参数 + public static class STU_PTZ_CFG_POSITION_STATUS_GET_IN_PARAM extends Structure + { + public int nChannel; // 云台通道号 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannel", "reserved"}); + } + + public static class ByReference extends STU_PTZ_CFG_POSITION_STATUS_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_POSITION_STATUS_GET_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取当前云台标定绝对位置信息输出参数 + public static class STU_PTZ_CFG_POSITION_STATUS_GET_OUT_PARAM extends Structure + { + public STU_CFG_PTZ_CALIBRATE_AREA_POS_PARAM stCaliPos; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stCaliPos"}); + } + + public static class ByReference extends STU_PTZ_CFG_POSITION_STATUS_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_PTZ_CFG_POSITION_STATUS_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + //门禁相关结构体 + + ////////////////////////////////////////////////////////////// + // 门禁控制通过时间段 + public static class STU_DOOR_CONTROL_PASS_SECTION extends Structure + { + public STU_DATE_I stuDate; // 作用日期 + public STU_TIME_SECTION_I stuTimeSection; // 作用时间段 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stuDate", "stuTimeSection", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CONTROL_PASS_SECTION implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CONTROL_PASS_SECTION implements Structure.ByValue + { + } + } + + // 门禁全局通过时间段 + public static class STU_DOOR_GLOBAL_PASS_SECTION extends Structure + { + public int emAccesType; // 访问类型,EM_DOOR_ACCESS_TYPE + public STU_TIME_SECTION_I stuTimeSection; // 作用时间段 + public int nAccessTypeNew; // 通行验证模式,用于扩展AccesType,掩码表示 + // 偶数位表示通行方式,奇数位表示低一位通行方式 + // 组合方式:0-或;1-且。 + public byte[] reserved = new byte[60]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emAccesType", "stuTimeSection", "nAccessTypeNew", "reserved"}); + } + + public static class ByReference extends STU_DOOR_GLOBAL_PASS_SECTION implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_GLOBAL_PASS_SECTION implements Structure.ByValue + { + } + } + + // 单个门禁通道模式配置信息 + public static class STU_DOOR_CFG_SC_MODE extends Structure + { + public int emMode; // 门禁模式,EM_DOOR_MODE_TYPE + public byte[] reserved = new byte[16]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emMode", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_SC_MODE implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_SC_MODE implements Structure.ByValue + { + } + } + + // 单个门禁通道时间段配置信息 + public static class STU_DOOR_CFG_SC_CONTROL_TIME_SECTION extends Structure + { + public int bEnable; // 是否使能 + public byte[] szName = new byte[128]; // 时间段名称 + public int emStatus; // 门禁状态,EM_DOOR_STATUS_TYPE + public int nPassTimeSecCount; // 通过时间段数目 + // 通过时间段数组 + public STU_DOOR_CONTROL_PASS_SECTION[] stuPassTimeSecArr = new STU_DOOR_CONTROL_PASS_SECTION[NetDefs.MAX_DOOR_PASS_TIME_SEC_NUM]; + public byte[] reserved = new byte[128]; // 保留参数 + + public STU_DOOR_CFG_SC_CONTROL_TIME_SECTION() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szName", "emStatus", + "nPassTimeSecCount", "stuPassTimeSecArr", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_SC_CONTROL_TIME_SECTION implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_SC_CONTROL_TIME_SECTION implements Structure.ByValue + { + } + } + + // 单个门禁通道所有全局时间段信息 + public static class STU_DOOR_CFG_SC_CONTROL_TIME_SECTIONS extends Structure + { + // 有效的时段个数,不能超过 MAX_DOOR_TIME_SEC_NUM + public int nTimeSecNum; + // 单个门禁通道全局时间段数组 + public STU_DOOR_CFG_SC_CONTROL_TIME_SECTION[] stuTimeSecArray = new STU_DOOR_CFG_SC_CONTROL_TIME_SECTION[NetDefs.MAX_DOOR_TIME_SEC_NUM]; + // 保留参数 + public byte[] reserved = new byte[128]; + + public STU_DOOR_CFG_SC_CONTROL_TIME_SECTIONS() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nTimeSecNum", "stuTimeSecArray", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_SC_CONTROL_TIME_SECTIONS implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_SC_CONTROL_TIME_SECTIONS implements Structure.ByValue + { + } + } + + // 单个门禁通道全局时间段 + public static class STU_DOOR_CFG_SC_GLOBAL_TIME_SECTION extends Structure + { + public byte[] szName = new byte[128]; // 时间段名称 + public int emType; // 通过时间段类型,EM_DOOR_PASS_TIME_TYPE + public int nPassTimeSecCount; // 通过时间段数目 + // 通过时间段数组 + public STU_DOOR_GLOBAL_PASS_SECTION[] stuPassTimeSecArr = new STU_DOOR_GLOBAL_PASS_SECTION[NetDefs.MAX_DOOR_PASS_TIME_SEC_NUM]; + public byte[] reserved = new byte[128]; // 保留参数 + + public STU_DOOR_CFG_SC_GLOBAL_TIME_SECTION() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"szName", "emType", "nPassTimeSecCount", + "stuPassTimeSecArr", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_SC_GLOBAL_TIME_SECTION implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_SC_GLOBAL_TIME_SECTION implements Structure.ByValue + { + } + } + + // 单个门禁通道所有全局时间段信息 + public static class STU_DOOR_CFG_SC_GLOBAL_TIME_SECTIONS extends Structure + { + // 有效的时段个数,不能超过 MAX_DOOR_TIME_SEC_NUM + public int nTimeSecNum; + // 单个门禁通道全局时间段数组 + public STU_DOOR_CFG_SC_GLOBAL_TIME_SECTION[] stuTimeSecArray = new STU_DOOR_CFG_SC_GLOBAL_TIME_SECTION[NetDefs.MAX_DOOR_TIME_SEC_NUM]; + // 保留参数 + public byte[] reserved = new byte[128]; + + public STU_DOOR_CFG_SC_GLOBAL_TIME_SECTIONS() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nTimeSecNum", "stuTimeSecArray", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_SC_GLOBAL_TIME_SECTIONS implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_SC_GLOBAL_TIME_SECTIONS implements Structure.ByValue + { + } + } + + // 单个门禁通道防拆报警配置 + public static class STU_DOOR_CFG_SC_ALARM_TAMPER extends Structure + { + public int bEnable; // 是否使能 + public STU_EVENT_HANDLER stuEventHandler; // 事件联动项 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "stuEventHandler", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_SC_ALARM_TAMPER implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_SC_ALARM_TAMPER implements Structure.ByValue + { + } + } + + // 单个门禁通道黑白名单报警配置 + public static class STU_DOOR_CFG_SC_ALARM_BLACKLIST extends Structure + { + public int bEnable; // 是否使能 + public STU_EVENT_HANDLER stuEventHandler; // 事件联动项 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "stuEventHandler", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_SC_ALARM_BLACKLIST implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_SC_ALARM_BLACKLIST implements Structure.ByValue + { + } + } + + // 单个门禁通道胁迫报警配置 + public static class STU_DOOR_CFG_SC_ALARM_COERCE extends Structure + { + public int bEnable; // 是否使能 + public STU_EVENT_HANDLER stuEventHandler; // 事件联动项 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "stuEventHandler", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_SC_ALARM_COERCE implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_SC_ALARM_COERCE implements Structure.ByValue + { + } + } + + // 单个门禁通道门超时未关配置 + public static class STU_DOOR_CFG_SC_ALARM_OPENHOLD extends Structure + { + public int bEnable; // 是否使能 + public int nHoldSecond; // 门未关超时时间,单位:秒 + public STU_EVENT_HANDLER stuEventHandler; // 事件联动项 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "nHoldSecond", "stuEventHandler", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_SC_ALARM_OPENHOLD implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_SC_ALARM_OPENHOLD implements Structure.ByValue + { + } + } + + // 门禁检测日志模块控制配置 + public static class STU_DOOR_CFG_ACCESS_RECORD extends Structure + { + public int bSavePicture; // 日志是否存储图片 + public byte[] reserved = new byte[512]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bSavePicture", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_ACCESS_RECORD implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_ACCESS_RECORD implements Structure.ByValue + { + } + } + + // 门禁人脸识别通过文字提示自定义配置 + public static class STU_DOOR_CFG_OPENTIPS extends Structure + { + public int bVoiceEnable; // 语音使能 + public int nVoiceTipType; // 提示音类别 + // 0-默认提示,1-欢迎光临,2-通行成功,3-打卡成功,4-识别成功,5-自定义 + public byte[] szCustomTips = new byte[18]; // 当提示语类别为自定义,设置时,如果该值为空,则不设置;如果不为空则按自定义设置 + public byte[] reserved1 = new byte[2]; // 字节对齐 + public byte[] szCustomVoiceTips = new byte[18]; // 文字转语音,当"VoiceTipType"类型为"6-自定义文字语音"时有效 + public int nTextTipType; // 提示语类别 + // 0-提示语为空 1-欢迎光临 2-通行成功 3-打开成功 4-识别成功 5-自定义 + public int nShowTips; // 是否显示界面的提示,1 显示,0 不显示 + public int bLivenessEnable; // 是否显示活体标签,TREU - 显示,FALSE不显示,默认不显示 + public byte[] reserved2 = new byte[52]; // 保留参数,总大小4字节对齐 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bVoiceEnable", "nVoiceTipType", "szCustomTips", "reserved1", + "szCustomVoiceTips", "nTextTipType", "nShowTips", "bLivenessEnable", "reserved2"}); + } + + public static class ByReference extends STU_DOOR_CFG_OPENTIPS implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_OPENTIPS implements Structure.ByValue + { + } + } + + // 门禁访问视图配置外信息 + public static class STU_DOOR_EXTRA_INFO extends Structure + { + public int bShowIP; // 是否显示设备IP + public int bShowOfflineData; // 是否显示离线人员信息 + public int bShowPersonInfo; // 是否显示人员数 + public int bShowSerailNo; // 是否显示设备序列号 + public int bShowVersion; // 是否显示设备版本号 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bShowIP", "bShowOfflineData", "bShowPersonInfo", + "bShowSerilNo", "bShowVersion"}); + } + + public static class ByReference extends STU_DOOR_EXTRA_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_EXTRA_INFO implements Structure.ByValue + { + } + } + + // 门禁访问视图配置信息 + public static class STU_DOOR_CFG_ACCESS_VIEW extends Structure + { + public int bShowName; // 是否显示姓名,TRUE-显示,FALSE-不显示 + public int bShowID; + public int nWorkstateTime; // 工作状态时间,无人脸间隔多久进入屏保,单位秒,范围[0, 86400] + public int nStandbyTime; // 进入息屏时间,单位秒[0, 86400], -1 表示未设置 + public int bShowPic; // 是否显示识别人员的照片 + public byte[] szCustom = new byte[128]; // 自定义字符串 + public STU_DOOR_EXTRA_INFO stuExtraInfo; // 额外信息 + public byte[] reserved = new byte[372]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bShowName", "bShowID", "nWorkstateTime", "nStandbyTime", + "bShowPic", "szCustom", "stuExtraInfo", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_ACCESS_VIEW implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_ACCESS_VIEW implements Structure.ByValue + { + } + } + + // 门禁陌生人提示配置信息 + public static class STU_DOOR_CFG_STRANGER_TIPS extends Structure + { + public int bEnable; // 陌生人提示使能 + public int emTipType; // 提示信息类型, EM_STRANGER_TIPS_TYPE + public byte[] szCustomTips = new byte[64]; // 自定义提示,emTipType == EM_STRANGER_TIPS_TYPE_CUSTOM时有效 + public int nVoiceSelect; // 语音设置 + // 0 - "人员未注册, 请联系管理员" + // 1 - "人员未注册" + // 2 - "自定义文字转语音" + public int bVoiceEnable; // 陌生人语音是否开启 + public byte[] szCustomVoiceTips = new byte[64];//陌生人语音提示,语音设置2时有效 + public byte[] reserved = new byte[508]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "emTipType", "szCustomTips", + "nVoiceSelect", "bVoiceEnable", "szCustomVoiceTips", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_STRANGER_TIPS implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_STRANGER_TIPS implements Structure.ByValue + { + } + } + + // 门禁黑名单提示配置信息 + public static class STU_DOOR_CFG_BLACKLIST_TIPS extends Structure + { + public int bEnable; // 使能 + public byte[] szCustomTips = new byte[64]; // 提示信息, 可自定义 + public int bVoiceEnable; // 语音提示使能 + public byte[] szCustomVoiceTips = new byte[64];//语音提示信息 + public byte[] reserved = new byte[164]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szCustomTips", + "bVoiceEnable", "szCustomVoiceTips", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_BLACKLIST_TIPS implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_BLACKLIST_TIPS implements Structure.ByValue + { + } + } + + // 身份证通行信息显示 + public static class STU_DOOR_ACCESS_STATE extends Structure + { + public int nBgColor; // 文字背景色 + public int bShowEnable; // 显示使能 + public byte[] szShowTips = new byte[64]; // 文字提示 + public int bVoiceEnable; // 语音使能 + public byte[] szVoiceTips = new byte[64]; // 语音提示 + public byte[] reserved = new byte[128]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nBgColor", "bShowEnable", + "szShowTips", "bVoiceEnable", "szVoiceTips", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_STATE implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_STATE implements Structure.ByValue + { + } + } + + // 门禁身份证设置 + public static class STU_DOOR_CFG_IDCARD_CONFIG extends Structure + { + public int bEnable; // 使能 + public int nAccessType; // 通行模式, 0-刷证通行,1-人证一体 + public int bMeasureTemperature; // 测温使能 + public int nTrustMode; // 门禁托管模式 + // 1 前端控制模式->设备控制模式【单机模式】; + // 2 平台托管模式 -> 平台控制模式,平台离线,不会转成模式 1; + // 3 平台托管/前端控制模式 -> 平台控制模式,平台离线,转换模式 1; + // 4 前端控制/平台托管模式 识别通过,直接开门,识别不通过,等待平台回复,离线后转换模式 + public int nVerifyMode; // 通行方式, + public int nHealthCodePlatform; // + public STU_DOOR_ACCESS_STATE stuAccessOk; // 通行成功信息 + public STU_DOOR_ACCESS_STATE stuAccessFail; // 通行失败信息 + public byte[] reserved = new byte[256]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "nAccessType", "bMeasureTemperature", "nTrustMode", + "nVerifyMode", "nHealthCodePlatform", "stuAccessOk", "stuAccessFail", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_IDCARD_CONFIG implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_IDCARD_CONFIG implements Structure.ByValue + { + } + } + + // 门禁二维码设置 + public static class STU_DOOR_CFG_QRCODE_CONFIG extends Structure + { + public int bEnable; // 使能 + public int bSoftDecode; // 软解二维码 + public int nVerifyMode; // 验证模式,0:仅刷码,1:刷码且测温 + public int nMethod; // 解析方式,掩码 bit0: 卡号解析 bit1: TLV协议解析 bit2: 健康码解析 bit3: 二维码数据透传 + public int nHealthCodePlatform; // 健康码平台,当解析方式包含“健康码解析”时有效 + // 0: 国康码 1 台州健康码平台 2 山东健康码平台 + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "bSoftDecode", "nVerifyMode", "nMethod", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_QRCODE_CONFIG implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_QRCODE_CONFIG implements Structure.ByValue + { + } + } + + // 健康码通行规则 + public static class STU_DOOR_HEALTH_ACCESS_RULE extends Structure + { + public int bVoiceEnable; // 语音提示使能 + public int nPass; // 1-通行,0-不通行 + public byte[] szMsg = new byte[64]; // 语音提示信息 + public byte[] reserved = new byte[64]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bVoiceEnable", "nPass", "szMsg", "reserved"}); + } + + public static class ByReference extends STU_DOOR_HEALTH_ACCESS_RULE implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_HEALTH_ACCESS_RULE implements Structure.ByValue + { + } + } + + // 门禁健康码设置 + public static class STU_DOOR_CFG_HEALTHCODE_CONFIG extends Structure + { + public int bEnable; // 使能 + public byte[] szUrl = new byte[128]; // URL + public int nPort; // 端口 + public byte[] szHost = new byte[128]; // 健康码获取地址 + public STU_DOOR_HEALTH_ACCESS_RULE stuGreenCode; // 绿码 + public STU_DOOR_HEALTH_ACCESS_RULE stuOrangeCode; // 橙码 + public STU_DOOR_HEALTH_ACCESS_RULE stuYellowCode; // 黄码 + public STU_DOOR_HEALTH_ACCESS_RULE stuRedCode; // 红码 + public STU_DOOR_HEALTH_ACCESS_RULE stuNoCode; // 无码 + public byte[] reserved = new byte[256]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "szUrl", "nPort", "szHost", "stuGreenCode", + "stuOrangeCode", "stuYellowCode", "stuRedCode", "stuNoCode", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_HEALTHCODE_CONFIG implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_HEALTHCODE_CONFIG implements Structure.ByValue + { + } + } + + // 基础设置细节 + public static class STU_DOOR_GLOBAL_SETTING_DETAIL extends Structure + { + // 无识别时欢迎文字 + public byte[] szWelcomeString = new byte[64]; + // 名称 + public byte[] szName = new byte[64]; + // 保留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szWelcomeString", "szName", "reserved"}); + } + + public static class ByReference extends STU_DOOR_GLOBAL_SETTING_DETAIL implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_GLOBAL_SETTING_DETAIL implements Structure.ByValue + { + } + } + + // 门禁全局基础设置 + public static class STU_DOOR_CFG_GLOBAL_SETTING extends Structure + { + // 实际数量 + public int nSettingCount; + // 配置 + public STU_DOOR_GLOBAL_SETTING_DETAIL[] stDetails = new STU_DOOR_GLOBAL_SETTING_DETAIL[NetDefs.MAX_DOOR_GLOBAL_SETTING_NUM]; + // 保留参数 + public byte[] reserved = new byte[128]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nSettingCount", "stDetails", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GLOBAL_SETTING implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GLOBAL_SETTING implements Structure.ByValue + { + } + } + + // 门禁屏幕配置 + public static class STU_DOOR_CFG_SCREEN extends Structure + { + public int bEnable; // 使能 + public int nBrightness; // 屏幕亮度,【0-100】 + public byte[] reserved = new byte[256]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "nBrightness", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_SCREEN implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_SCREEN implements Structure.ByValue + { + } + } + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 门禁权限组周计划时段配置 + public static class STU_GROUP_WEEK_PLAN_INFO extends Structure + { + // 索引号,与权限组周计划指定的索引对应 + // 该值不能被修改,只用于指定具体时段 + public int nIndex; + // 是否启动 + public int bEnable; + // 周计划名称 + public byte[] szWeekPlanName = new byte[64]; + // 周计划 + public STU_WEEK_TIME_SECTION_SCHEDULE stTimeSchedule = new STU_WEEK_TIME_SECTION_SCHEDULE(); + // 预留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nIndex", "bEnable", "szWeekPlanName", "stTimeSchedule", "reserved"}); + } + + public static class ByReference extends STU_GROUP_WEEK_PLAN_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_GROUP_WEEK_PLAN_INFO implements Structure.ByValue + { + } + } + + // 门禁权限组周计划时段配置 + public static class STU_DOOR_CFG_GROUP_WEEK_PLAN extends Structure + { + // 时段数量,最大MAX_DOOR_GROUP_WEEK_PLAN_COUNT个 + public int nWeekPlanCount; + // 周计划数段信息 + public STU_GROUP_WEEK_PLAN_INFO[] stWeekPlanInfos = new STU_GROUP_WEEK_PLAN_INFO[NetDefs.MAX_DOOR_GROUP_WEEK_PLAN_COUNT]; + + public STU_DOOR_CFG_GROUP_WEEK_PLAN() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nWeekPlanCount", "stWeekPlanInfos"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_WEEK_PLAN implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_WEEK_PLAN implements Structure.ByValue + { + } + } + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 门禁权限组假日计划时间 + public static class STU_GROUP_HOLIDAY_TIME extends Structure + { + public int nYear; // 年 + public int nMonth; // 月 + public int nWeek; // 第几周 + // 1-first, 2-second, 3-third, 4-fouth, -1-last, 0-按日计算的方法 + public int nDay; // nDayFormat == 0,表示几号[1-31] + // nDayFormat == 1,表示星期几[0-6],从周天开始 + public byte[] reserved = new byte[16]; // 预留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nYear", "nMonth", "nWeek", "nDay", "reserved"}); + } + + public static class ByReference extends STU_GROUP_HOLIDAY_TIME implements Structure.ByReference + { + } + + public static class ByValue extends STU_GROUP_HOLIDAY_TIME implements Structure.ByValue + { + } + } + + // 门禁权限组假日计划 + public static class STU_GROUP_HOLIDAY_SCHEDULE extends Structure + { + // 假日名 + public byte[] szHolidayName = new byte[128]; + // 假日时间样式,0 - 按天,1 - 按周,-1 - 未知 + public int nDayFormat; + // 开始时间,需与nDayFormat配合使用 + public STU_GROUP_HOLIDAY_TIME stStartTime = new STU_GROUP_HOLIDAY_TIME(); + // 结束时间,需与nDayFormat配合使用 + public STU_GROUP_HOLIDAY_TIME stEndTime = new STU_GROUP_HOLIDAY_TIME(); + // 重复方式,0 - 仅一次,1 - 每年,-1 - 未知 + public int nRepeat; + // 时间段 + public STU_DAY_TIME_SECTION_SCHEDULE stuTimeSectionSchedule; + // 预留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szHolidayName", "nDayFormat", + "stStartTime", "stEndTime", "nRepeat", "stuTimeSectionSchedule", "reserved"}); + } + + public static class ByReference extends STU_GROUP_HOLIDAY_SCHEDULE implements Structure.ByReference + { + } + + public static class ByValue extends STU_GROUP_HOLIDAY_SCHEDULE implements Structure.ByValue + { + } + } + + // 门禁权限组假日计划时段配置 + public static class STU_GROUP_HOLIDAY_PLAN_INFO extends Structure + { + // 索引号,与权限组假日计划指定的索引对应 + // 该值不能被修改,只用于指定具体时段 + public int nIndex; + // 是否启动 + public int bEnable; + // 假日计划名称 + public byte[] szHolidayPlanName = new byte[128]; + // 假日数量,最大MAX_DOOR_GROUP_HOLIDAY_COUNT个 + public int nHolidayCount; + // 假日计划 + public STU_GROUP_HOLIDAY_SCHEDULE[] stHolidaySchedules = new STU_GROUP_HOLIDAY_SCHEDULE[NetDefs.MAX_DOOR_GROUP_HOLIDAY_COUNT]; + // 预留参数 + public byte[] reserved = new byte[256]; + + public STU_GROUP_HOLIDAY_PLAN_INFO() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nIndex", "bEnable", "szHolidayPlanName", + "nHolidayCount", "stHolidaySchedules", "reserved"}); + } + + public static class ByReference extends STU_GROUP_HOLIDAY_PLAN_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_GROUP_HOLIDAY_PLAN_INFO implements Structure.ByValue + { + } + } + + // 门禁权限组假日计划时段配置 + public static class STU_DOOR_CFG_GROUP_HOLIDAY_PLAN extends Structure + { + // 时段数量,最大MAX_DOOR_GROUP_HOLIDAY_PLAN_COUNT个 + public int nHolidayPlanCount; + // 假日计划数段信息 + public STU_GROUP_HOLIDAY_PLAN_INFO[] stHolidayPlanInfos = new STU_GROUP_HOLIDAY_PLAN_INFO[NetDefs.MAX_DOOR_GROUP_HOLIDAY_PLAN_COUNT]; + + public STU_DOOR_CFG_GROUP_HOLIDAY_PLAN() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nHolidayPlanCount", "stHolidayPlanInfos"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_HOLIDAY_PLAN implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_HOLIDAY_PLAN implements Structure.ByValue + { + } + } + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 门禁广告工作模式配置 + public static class STU_DOOR_CFG_AD_WORK_MODE_OPTION extends Structure + { + // 当前模式,0 - 默认模式,1 - 广告模式 + public int nMode; + // "nMode" 为1时有效,0 - 视频播放,1 - 图片播放 + public int nPlayMode; + // 图片播放时间间隔,"nPlayMode" 为1时有效,单位s,填0时,按默认1秒播放 + public int nPlayInterval; + // 保留字节 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nMode", "nPlayMode", "nPlayInterval", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_AD_WORK_MODE_OPTION implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_AD_WORK_MODE_OPTION implements Structure.ByValue + { + } + } + + // 文件信息 + public static class STU_STANDBY_FILE_INFO extends Structure + { + // 文件名 + public byte[] szFileName = new byte[128]; + // 保留字节 + public byte[] reserved = new byte[256]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szFileName", "reserved"}); + } + + public static class ByReference extends STU_STANDBY_FILE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_STANDBY_FILE_INFO implements Structure.ByValue + { + } + } + + // 门禁待机界面模式配置 + public static class STU_DOOR_CFG_STANDBY_MODE extends Structure + { + // 模式 0 - 默认界面, 1 - 图片广告模式, 2 - 视频广告模式 + public int nMode; + // 视频间隔时间 + public int nMovieInterval; + // 视频文件数量 + public int nMovieFileCount; + // 视频文件数组 + public STU_STANDBY_FILE_INFO[] stMovieFileInfos = new STU_STANDBY_FILE_INFO[NetDefs.MAX_DOOR_STANDBY_FILE_COUNT]; + // 图片间隔时间 + public int nPictureInterval; + // 图片文件数量 + public int nPicFileCount; + // 图片文件数组 + public STU_STANDBY_FILE_INFO[] stPicFileInfos = new STU_STANDBY_FILE_INFO[NetDefs.MAX_DOOR_STANDBY_FILE_COUNT]; + // 保留字节 + public byte[] reserved = new byte[128]; + + public STU_DOOR_CFG_STANDBY_MODE() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nMode", "nMovieInterval", "nMovieFileCount", + "stMovieFileInfos", "nPictureInterval", "nPicFileCount", "stPicFileInfos", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_STANDBY_MODE implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_STANDBY_MODE implements Structure.ByValue + { + } + } + + // 体温检测结果提示配置 + public static class STU_TEMPERATURE_DETECT_TIPS extends Structure + { + // 画面提示使能, 0 - 禁用, 1 - 启用 + public int bShowEnable; + // 画面提示内容 + public byte[] szShowTips = new byte[32]; + // 语音提示使能, 0 - 禁用, 1 - 启用 + public int bVoiceEnable; + // 语音提示内容 + public byte[] szVoiceTips = new byte[32]; + // 保留参数 + public byte[] reserved = new byte[128]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bShowEnable", "szShowTips", "bVoiceEnable", + "szVoiceTips", "reserved"}); + } + + public static class ByReference extends STU_TEMPERATURE_DETECT_TIPS implements Structure.ByReference + { + } + + public static class ByValue extends STU_TEMPERATURE_DETECT_TIPS implements Structure.ByValue + { + } + } + + // 自动补偿配置(目前只针对海曼模块有效) + public static class STU_AUTO_CORRECTION extends Structure + { + // 自动补偿使能 + public int bCorrectEnable; + // 更新时间间隔,单位小时,范围0-24 + public int uInterval; + // 更新频率,范围0-10000 + public int uFrequency; + // 保留参数 + public byte[] reserved = new byte[128]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bCorrectEnable", "uInterval", "uFrequency", "reserved"}); + } + + public static class ByReference extends STU_AUTO_CORRECTION implements Structure.ByReference + { + } + + public static class ByValue extends STU_AUTO_CORRECTION implements Structure.ByValue + { + } + } + + // 门禁体温检测配置 + public static class STU_DOOR_CFG_TEMPERATURE_DETECT extends Structure + { + // 检测模式:0 - 仅作属性识别, 1 - 屏蔽体温异常人员 + public int nDetectMode; + // 正常体温范围-最小值 + public float fNormalMinimum; + // 正常体温范围-最大值 + public float fNormalMaximum; + + // 体温正常提示配置 + public STU_TEMPERATURE_DETECT_TIPS stNormalTips; + // 体温异常提示配置 + public STU_TEMPERATURE_DETECT_TIPS stAbnormalTips; + // 温度补偿, 正数表示增加, 负数表示减小 + public float fCorrection; + // 识别到人脸后, 开始测温的最小像素 + public int uMinPixel; + // 测温功能使能 + public int bEnable; + // 表面温度补偿,表面温度补偿,正数表示增加,负数表示减小(-5~5)(目前对海曼温度有效) + public float fSurfaceTempCorrection; + // 保留参数 + public byte[] reserved = new byte[112]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nDetectMode", "fNormalMinimum", "fNormalMaximum", + "stNormalTips", "stAbnormalTips", "fCorrection", "uMinPixel", "bEnable", "fSurfaceTempCorrection", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_TEMPERATURE_DETECT implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_TEMPERATURE_DETECT implements Structure.ByValue + { + } + } + + // 门禁体温检测配置EX + public static class STU_DOOR_CFG_TEMPERATURE_DETECT_EX extends Structure + { + // 测温功能使能 + public int bEnable; + // 检测模式:0 - 仅作属性识别, 1 - 屏蔽体温异常人员 + public int nDetectMode; + // 0.摄氏度,1.华氏度(温度单位) + public int nTempUnit; + // 正常体温范围-最小值 + public float fNormalMinimum; + // 正常体温范围-最大值 + public float fNormalMaximum; + // 温度补偿, 正数表示增加, 负数表示减小 + public float fCorrection; + // 表面温度补偿,表面温度补偿,正数表示增加,负数表示减小(-5~5)(目前对海曼温度有效) + public float fSurfaceTempCorrection; + // 识别到人脸后开始测温的最小像素(目前对测额温有效) + public int uMinPixel; + // 温度的最大等待时间,单位ms(目前对测手腕温度有效) + public int uWaitTime; + // 低温补偿,0-关闭;1-打开(低温默认映射到35加) + public int uLowTempCorrection; + // 热像取温区域偏移.X:0,Y:0 范围(-10~10)(目前对海曼温度有效) + public int nTempPicAreaOffsetX; + public int nTempPicAreaOffsetY; + // 高温判断灵敏度切换阈值(目前对海曼温度有效)(0~100) + public int uHighTempJudgeSensibilityThreshold; + //自动补偿配置(目前只针对海曼模块有效) + public STU_AUTO_CORRECTION stAutoCorrect; + // 体温正常提示配置 + public STU_TEMPERATURE_DETECT_TIPS stNormalTips; + // 体温异常提示配置 + public STU_TEMPERATURE_DETECT_TIPS stAbnormalTips; + // 保留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "nDetectMode", "nTempUnit", "fNormalMinimum", "fNormalMaximum", "fCorrection", + "fSurfaceTempCorrection", "uMinPixel", "uWaitTime", "uLowTempCorrection", "nTempPicAreaOffsetX", "nTempPicAreaOffsetY", + "uHighTempJudgeSensibilityThreshold", "stAutoCorrect", "stNormalTips", "stAbnormalTips", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_TEMPERATURE_DETECT_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_TEMPERATURE_DETECT_EX implements Structure.ByValue + { + } + } + + // 门禁口罩检测配置细节 + public static class STU_MASK_DETECT_CFG_DETAIL extends Structure + { + //提示使能 + public int bShowEnable; + //字体颜色 0 - 蓝, 1 - 绿, 2 - 红 + public int nBackgroundColor; + // 文字自定义信息 + public byte[] szShowTips = new byte[32]; + // 语音使能 + public int bVoiceEnable; + // 语音自定义信息 + public byte[] szVoiceTips = new byte[32]; + // 保留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bShowEnable", "nBackgroundColor", "szShowTips", + "bVoiceEnable", "szVoiceTips", "reserved"}); + } + + public static class ByReference extends STU_MASK_DETECT_CFG_DETAIL implements Structure.ByReference + { + } + + public static class ByValue extends STU_MASK_DETECT_CFG_DETAIL implements Structure.ByValue + { + } + } + + // 门禁口罩检测配置 + public static class STU_DOOR_CFG_MASK_DETECT extends Structure + { + //检测模式:0 - 仅作属性识别, 1 - 屏蔽不戴口罩人员, 2 - 屏蔽戴口罩人员 + public int nDetectMode; + // 已戴口罩配置 + public STU_MASK_DETECT_CFG_DETAIL stWareMaskDetail; + // 未戴口罩配置 + public STU_MASK_DETECT_CFG_DETAIL stNoMaskDetail; + // 保留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nDetectMode", "stWareMaskDetail", "stNoMaskDetail", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_MASK_DETECT implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_MASK_DETECT implements Structure.ByValue + { + } + } + + // 门禁口罩检测模式配置 + public static class STU_DOOR_CFG_MASK_DETECT_MODEL extends Structure + { + // 口罩检测模式:0 - 允许捂嘴,1 - 允许捂住嘴和鼻子 + public int nMaskDetectModel; + + // 保留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nMaskDetectModel", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_MASK_DETECT_MODEL implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_MASK_DETECT_MODEL implements Structure.ByValue + { + } + } + + // 门禁托管模式配置 + public static class STU_DOOR_CFG_HOSTING_MODEL extends Structure + { + // 门禁托管模式:1 前端控制模式 -> 设备控制模式【单机模式】 + // 2 平台托管模式 -> 平台控制模式,平台离线,不会转成模式 1 + // 3 平台托管/前端控制模式 -> 平台控制模式,平台离线,转换模式 1 + // 4 前端控制/平台托管模式 识别通过,直接开门,识别不通过,等待平台回复,离线后转换模式 1 + public int nTrustMode; + // 保留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nTrustMode", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_HOSTING_MODEL implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_HOSTING_MODEL implements Structure.ByValue + { + } + } + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //门禁配置操作相关结构体 + //门禁关联卡信息 + public static class STU_DOOR_CARD_INFO extends Structure + { + public byte[] szCardID = new byte[128]; // 卡号 ID + public byte[] szPersonCode = new byte[128]; // 人员编号 + public byte[] szLocation = new byte[256]; // 门禁位置 + public int emCardType; // 门禁卡类型,EM_DOOR_CARD_TYPE + public STU_DATE_SECTION_I stuValidDate; // 有效期日期 + public STU_TIME_SECTION_I stuValidTime; // 有效期的时间,默认0:0:0 - 23:59:59 + public int nLeftTime; // 门禁卡有效次数,仅限二维码卡和VIP卡,在卡的有效时间内。-1:无限次,0:权限到期 + public byte[] reserved = new byte[476]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szCardID", "szPersonCode", "szLocation", + "emCardType", "stuValidDate", "stuValidTime", "nLeftTime", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CARD_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CARD_INFO implements Structure.ByValue + { + } + } + + //门禁访问记录信息 + public static class STU_DOOR_ACCESS_RECORD_INFO extends Structure + { + public int nRecordID; // 记录编号 + public int bPass; // 是否允许通行 + public int emAccessType; // 访问类型,EM_DOOR_ACCESS_TYPE + public int emCardType; // 卡类型,EM_DOOR_CARD_TYPE + public byte[] szCardID = new byte[128]; // 卡编号 + public byte[] szPersonCode = new byte[128]; // 人员编号 + public byte[] szPersonName = new byte[128]; // 人员姓名 + public STU_TIME_EX stuTime; // 访问时间 + public byte[] szDetail = new byte[512]; // 详细描述,json 字符串,如 {"BoxNo" : "123"} + public byte[] szCustomID = new byte[128]; // 用户自定义编号 + public int nPassValue; // 0 - 对比不通过,1 - 通过,2 - 活体不通过,-1 - 未知/不支持 + public float fSearchScore; // 人脸识别评分[0.00 ~ 100.00],-1 - 未知/不支持 + public float fSearchThreshold; // 人脸识别阈值[0.00 ~ 100.00],-1 - 未知/不支持 + public float fTemperature; // 体温 + public int nMask; // 是否带口罩,0 - 未知,1 - 戴口罩,2 - 未戴口罩 + public byte[] reserved = new byte[364]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nRecordID", "bPass", "emAccessType", + "emCardType", "szCardID", "szPersonCode", "szPersonName", "stuTime", + "szDetail", "szCustomID", "nPassValue", "fSearchScore", "fSearchThreshold", + "fTemperature", "nMask", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_RECORD_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_RECORD_INFO implements Structure.ByValue + { + } + } + + //门禁通过时段信息 + public static class STU_DOOR_CFG_PASS_TIME extends Structure + { + public int nID; // 门禁时段 ID + public byte[] szName = new byte[128]; // 通过时段名称 + public int emType; // 时段类型,EM_DOOR_PASS_TIME_TYPE + public int nTimeSecCount; // 实际时段个数,不超过 MAX_DOOR_PASS_TIME_SEC_NUM + // 时段数组 + public STU_TIME_SECTION_I[] stuPassTimeSecArr = new STU_TIME_SECTION_I[32]; + public byte[] reserved = new byte[256]; // 保留参数 + + public STU_DOOR_CFG_PASS_TIME() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nID", "szName", "emType", + "nTimeSecCount", "stuPassTimeSecArr", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PASS_TIME implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PASS_TIME implements Structure.ByValue + { + } + } + + //门禁权限组信息 + public static class STU_DOOR_CFG_GROUP extends Structure + { + public byte[] szName = new byte[128]; // 门禁权限组名称 + public int nWeekPlanIndex; // 周计划时段数组下标,对应配置时段 + public int nHolidayPlanIndex; // 假日时段数组下标,对应配置时段 + public byte[] reserved = new byte[512]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szName", "nWeekPlanIndex", "nHolidayPlanIndex", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP implements Structure.ByValue + { + } + } + + // 门禁权限组绑定人员信息 + public static class STU_DOOR_CFG_GROUP_BIND_PERSON_INFO extends Structure + { + public byte[] szCode = new byte[128]; // 人员ID + public byte[] reserved = new byte[512]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szCode", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_BIND_PERSON_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_BIND_PERSON_INFO implements Structure.ByValue + { + } + } + + //门禁权限组与通行时段关系信息 + public static class STU_DOOR_CFG_GROUP_PASS_TIME extends Structure + { + public int bEnable; // 是否使能 + public int emAccessType; // 访问验证方式,EM_DOOR_ACCESS_TYPE + public int nPassTimeID; // 通行时段 ID + public byte[] szGroupName = new byte[128]; // 权限组名称 + public byte[] szPassTimeName = new byte[128]; // 通行时段名称 + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "emAccessType", "nPassTimeID", + "szGroupName", "szPassTimeName", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_PASS_TIME implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_PASS_TIME implements Structure.ByValue + { + } + } + + // 门禁通道的门磁信号配置 + public static class STU_DOOR_CFG_OPEN_SIGNAL extends Structure + { + public int nSingnal; // -1-未知,0-关门,1-开门;默认开门 + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nSingnal", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_OPEN_SIGNAL implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_OPEN_SIGNAL implements Structure.ByValue + { + } + } + + // 门禁开门时间延迟配置 + public static class STU_DOOR_CFG_OPEN_TIME extends Structure + { + // 延迟时间,单位 ms + // 注意:此字段和开门控制时所指定的开门延时互斥 + // 如果开门控制接口(DOOR_CFG_OPT_DOOR_OPEN_ONCE/STU_DOOR_OPEN_ONCE_IN_PARAM)指定了开门延时,则此字段无效 + public int nTime; + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nTime", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_OPEN_TIME implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_OPEN_TIME implements Structure.ByValue + { + } + } + + //获取门禁通过时间列表输入参数 + public static class STU_DOOR_CFG_PASS_TIMES_GET_IN_PARAM extends Structure + { + public int bCondition; // 是否启用条件查询 + public int nID; // 启用条件查询-需要查询的通过时段ID(可选), <=0 不查询 + public int emPassTimeType; // 启用条件查询-需要查询的通过时段类型(可选),,EM_DOOR_PASS_TIME_TYPE中,DOOR_PASS_TIME_TYPE_UNKNOWN 不查询 + public byte[] szName = new byte[128]; // 启用条件查询-需要查询的人员姓名(可选),为空不查询 + public byte[] reserved = new byte[512]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bCondition", "nID", "emPassTimeType", + "szName", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PASS_TIMES_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PASS_TIMES_GET_IN_PARAM implements Structure.ByValue + { + } + } + + //获取门禁通过时间列表输出参数 + public static class STU_DOOR_CFG_PASS_TIMES_GET_OUT_PARAM extends Structure + { + public int nPassTimeCount; // 实际时段个数 + // 通过时段数组 + public STU_DOOR_CFG_PASS_TIME[] stuPassTimeArr = new STU_DOOR_CFG_PASS_TIME[NetDefs.MAX_DOOR_PASS_TIME_NUM]; + public byte[] reserved = new byte[64]; // 保留参数 + + public STU_DOOR_CFG_PASS_TIMES_GET_OUT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nPassTimeCount", "stuPassTimeArr", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PASS_TIMES_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PASS_TIMES_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + //添加门禁通过时间输入参数 + public static class STU_DOOR_CFG_PASS_TIME_ADD_IN_PARAM extends Structure + { + public byte[] szName = new byte[128]; // 通过时间段名称 + public int emPassTimeType; // 通过时间类型,EM_DOOR_PASS_TIME_TYPE + public int nTimeSecCount; // 需要插入的时段个数,不超过 MAX_DOOR_PASS_TIME_SEC_NUM + // 时段数组 + public STU_TIME_SECTION_I[] stuPassTimeSecArr = new STU_TIME_SECTION_I[32]; + public byte[] reserved = new byte[128]; // 保留参数 + + public STU_DOOR_CFG_PASS_TIME_ADD_IN_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"szName", "emPassTimeType", "nTimeSecCount", "stuPassTimeSecArr", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PASS_TIME_ADD_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PASS_TIME_ADD_IN_PARAM implements Structure.ByValue + { + } + } + + //添加门禁通过时段输出参数 + public static class STU_DOOR_CFG_PASS_TIME_ADD_OUT_PARAM extends Structure + { + public int nID; // 时段 ID + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nID", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PASS_TIME_ADD_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PASS_TIME_ADD_OUT_PARAM implements Structure.ByValue + { + } + } + + //更新门禁通过时段输入参数 + public static class STU_DOOR_CFG_PASS_TIME_UPDATE_IN_PARAM extends Structure + { + public int nID; // 门禁时段 ID + public byte[] szName = new byte[128]; // 通过时段名称(可选),如果为空则不更新 + public int emType; // 时段类型(可选),EM_DOOR_PASS_TIME_TYPE,如果为 DOOR_PASS_TIME_TYPE_UNKNOWN 则无效 + public int nTimeSecCount; // 时段个数(可选),如果 <= 0,则时段不更新 + // 时段数组(可选) + public STU_TIME_SECTION_I[] stuPassTimeSecArr = new STU_TIME_SECTION_I[32]; + // 如果为 NULL,则不更新 + public byte[] reserved = new byte[256]; // 保留参数 + + public STU_DOOR_CFG_PASS_TIME_UPDATE_IN_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nID", "szName", "emType", + "nTimeSecCount", "stuPassTimeSecArr", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PASS_TIME_UPDATE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PASS_TIME_UPDATE_IN_PARAM implements Structure.ByValue + { + } + } + + //更新门禁通过时段输出参数 + public static class STU_DOOR_CFG_PASS_TIME_UPDATE_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PASS_TIME_UPDATE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PASS_TIME_UPDATE_OUT_PARAM implements Structure.ByValue + { + } + } + + //删除门禁通过时间输入参数 + public static class STU_DOOR_CFG_PASS_TIME_REMOVE_IN_PARAM extends Structure + { + public int nID; // 门禁通过时间 ID 号 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nID", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PASS_TIME_REMOVE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PASS_TIME_REMOVE_IN_PARAM implements Structure.ByValue + { + } + } + + //删除门禁通过时间输出参数 + public static class STU_DOOR_CFG_PASS_TIME_REMOVE_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PASS_TIME_REMOVE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PASS_TIME_REMOVE_OUT_PARAM implements Structure.ByValue + { + } + } + + //获取门禁权限组列表输入参数 + public static class STU_DOOR_CFG_GROUPS_GET_IN_PARAM extends Structure + { + public byte[] reserved = new byte[512]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUPS_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUPS_GET_IN_PARAM implements Structure.ByValue + { + } + } + + //获取门禁权限组列表输出参数 + public static class STU_DOOR_CFG_GROUPS_GET_OUT_PARAM extends Structure + { + // 获取的权限组个数,目前最多MAX_DOOR_GROUP_NUM个 + public int nCount; + // 门禁权限组数组 + public STU_DOOR_CFG_GROUP[] stuGroupArr = new STU_DOOR_CFG_GROUP[NetDefs.MAX_DOOR_GROUP_NUM]; + // 保留参数 + public byte[] reserved = new byte[64]; + + public STU_DOOR_CFG_GROUPS_GET_OUT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nCount", "stuGroupArr", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUPS_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUPS_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + //添加门禁权限组输入参数 + public static class STU_DOOR_CFG_GROUP_ADD_IN_PARAM extends Structure + { + public byte[] szName = new byte[128]; // 门禁权限组名称 + public int nWeekPlanIndex; // 周计划时段数组下标,对应配置时段 + public int nHolidayPlanIndex; // 假日时段数组下标,对应配置时段 + public byte[] reserved = new byte[512]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szName", "nWeekPlanIndex", "nHolidayPlanIndex", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_ADD_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_ADD_IN_PARAM implements Structure.ByValue + { + } + } + + //添加门禁权限组输出参数 + public static class STU_DOOR_CFG_GROUP_ADD_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[512]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_ADD_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_ADD_OUT_PARAM implements Structure.ByValue + { + } + } + + //更新门禁权限组信息输入参数 + public static class STU_DOOR_CFG_GROUP_UPDATE_IN_PARAM extends Structure + { + public byte[] szOldName = new byte[128]; // 原门禁权限组名称,非空表示有效 + + public int bModifyName; // 是否修改名称 + public byte[] szNewName = new byte[128]; // 需要更新的权限组名称,选填,bModifyName == TRUE时有效 + + public int bModifyWeekPlan; // 是否修改周计划时段 + public int nWeekPlanIndex; // 周计划时段数组下标,对应配置时段,选填,bModifyWeekPlan == TRUE时有效 + + public int bModifyHolidayPlan; // 是否修改假日时段 + public int nHolidayPlanIndex; // 假日时段数组下标,对应配置时段,选填,bModifyHolidayPlan == TRUE时有效 + + public byte[] reserved = new byte[512]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szOldName", "bModifyName", "szNewName", + "bModifyWeekPlan", "nWeekPlanIndex", "bModifyHolidayPlan", "nHolidayPlanIndex", + "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_UPDATE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_UPDATE_IN_PARAM implements Structure.ByValue + { + } + } + + //更新门禁权限组信息输出参数 + public static class STU_DOOR_CFG_GROUP_UPDATE_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_UPDATE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_UPDATE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 删除门禁权限组输入参数(不支持含中文名删除) + public static class STU_DOOR_CFG_GROUP_REMOVE_IN_PARAM extends Structure + { + public int nGroupCount; // 需要删除的权限组数量 + public Pointer lpszGroupNames; // 需要删除的权限组名称,支持同时删除多个权限组,权限组名之间用‘|’分割 + public byte[] reserved = new byte[512]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nGroupCount", "lpszGroupNames", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_REMOVE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_REMOVE_IN_PARAM implements Structure.ByValue + { + } + } + + //删除门禁权限组输出参数 + public static class STU_DOOR_CFG_GROUP_REMOVE_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_REMOVE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_REMOVE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 门禁删除权限组信息 + public static class STU_GROUP_REMOVE_INFO extends Structure + { + public byte[] szName = new byte[128]; // 需要删除的权限组名称 + public byte[] reserved = new byte[512]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szName", "reserved"}); + } + + public static class ByReference extends STU_GROUP_REMOVE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_GROUP_REMOVE_INFO implements Structure.ByValue + { + } + } + + // 删除门禁权限组输入参数Ex(支持含中文名删除) + public static class STU_DOOR_CFG_GROUP_REMOVE_IN_PARAM_EX extends Structure + { + public int nGroupCount; // 需要删除的权限组数量 + public Pointer lpstGroupInfoAry; // 需要删除的权限组信息数组, 外部开辟数组STU_GROUP_REMOVE_INFO* + public byte[] reserved = new byte[512]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nGroupCount", "lpstGroupInfoAry", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_REMOVE_IN_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_REMOVE_IN_PARAM_EX implements Structure.ByValue + { + } + } + + // 删除门禁权限组输出参数Ex + public static class STU_DOOR_CFG_GROUP_REMOVE_OUT_PARAM_EX extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_REMOVE_OUT_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_REMOVE_OUT_PARAM_EX implements Structure.ByValue + { + } + } + + // 获取权限组绑定的人员输入参数 + public static class STU_DOOR_CFG_GROUP_GET_BIND_PERSON_IN_PARAM extends Structure + { + public byte[] szGroupName = new byte[128]; // 权限组名称 + public int nOffset; // 查询起始偏移,从0开始 + public int nCount; // 查询数量,最大不超过MAX_DOOR_GROUP_BIND_PERSON_COUNT + public byte[] reserved = new byte[512]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szGroupName", "nOffset", "nCount", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_GET_BIND_PERSON_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_GET_BIND_PERSON_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取权限组绑定的人员输出参数 + public static class STU_DOOR_CFG_GROUP_GET_BIND_PERSON_OUT_PARAM extends Structure + { + // 查询到的实际人数,单次查询最大MAX_DOOR_GROUP_FIND_BIND_PERSON_COUNT + public int nPersonCount; + // 查询到的人员信息数组 + public STU_DOOR_CFG_GROUP_BIND_PERSON_INFO[] stPersonInfos = new STU_DOOR_CFG_GROUP_BIND_PERSON_INFO[NetDefs.MAX_DOOR_GROUP_FIND_BIND_PERSON_COUNT]; + // 保留参数 + public byte[] reserved = new byte[512]; + + public STU_DOOR_CFG_GROUP_GET_BIND_PERSON_OUT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nPersonCount", "stPersonInfos", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_GET_BIND_PERSON_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_GET_BIND_PERSON_OUT_PARAM implements Structure.ByValue + { + } + } + + // 绑定人员到对应权限组输入参数 + public static class STU_DOOR_CFG_GROUP_BIND_PERSON_IN_PARAM extends Structure + { + // 权限组名称 + public byte[] szGroupName = new byte[128]; + // 需绑定的人数,单次绑定最大MAX_DOOR_GROUP_BIND_PERSON_COUNT + public int nPersonCount; + // 绑定人员信息 + public STU_DOOR_CFG_GROUP_BIND_PERSON_INFO[] stPersonInfos = new STU_DOOR_CFG_GROUP_BIND_PERSON_INFO[NetDefs.MAX_DOOR_GROUP_BIND_PERSON_COUNT]; + // 保留参数 + public byte[] reserved = new byte[512]; + + public STU_DOOR_CFG_GROUP_BIND_PERSON_IN_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"szGroupName", "nPersonCount", "stPersonInfos", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_BIND_PERSON_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_BIND_PERSON_IN_PARAM implements Structure.ByValue + { + } + } + + // 绑定人员到对应权限组输出参数 + public static class STU_DOOR_CFG_GROUP_BIND_PERSON_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[512]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_BIND_PERSON_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_BIND_PERSON_OUT_PARAM implements Structure.ByValue + { + } + } + + // 删除权限组中绑定的人员输入参数 + public static class STU_DOOR_CFG_GROUP_UNBIND_PERSON_IN_PARAM extends Structure + { + // 权限组名称 + public byte[] szGroupName = new byte[128]; + // 需绑定的人数,单次绑定最大MAX_DOOR_GROUP_BIND_PERSON_COUNT + public int nPersonCount; + // 绑定人员信息 + public STU_DOOR_CFG_GROUP_BIND_PERSON_INFO[] stPersonInfos = new STU_DOOR_CFG_GROUP_BIND_PERSON_INFO[NetDefs.MAX_DOOR_GROUP_BIND_PERSON_COUNT]; + // 保留参数 + public byte[] reserved = new byte[512]; + + public STU_DOOR_CFG_GROUP_UNBIND_PERSON_IN_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"szGroupName", "nPersonCount", "stPersonInfos", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_UNBIND_PERSON_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_UNBIND_PERSON_IN_PARAM implements Structure.ByValue + { + } + } + + // 删除权限组中绑定的人员输出参数 + public static class STU_DOOR_CFG_GROUP_UNBIND_PERSON_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[512]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_UNBIND_PERSON_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_UNBIND_PERSON_OUT_PARAM implements Structure.ByValue + { + } + } + + //获取权限组与通行时段关系信息输入参数 + public static class STU_DOOR_CFG_GROUP_PASS_TIMES_GET_IN_PARAM extends Structure + { + public int bCondition; // 是否条件查询 + public byte[] szGroupName = new byte[128]; // 启用条件-按权限组名称(可选) + public int nPassTimeID; // 启用条件-按通行时段ID(可选) + // 如果两者都启用,已权限组名查询优先 + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bCondition", "szGroupName", "nPassTimeID", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_PASS_TIMES_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_PASS_TIMES_GET_IN_PARAM implements Structure.ByValue + { + } + } + + //获取权限组与通行时段关系信息输出参数 + public static class STU_DOOR_CFG_GROUP_PASS_TIMES_GET_OUT_PARAM extends Structure + { + public int nCount; // 关系信息个数 + // 权限组与通行时段关系数组 + public STU_DOOR_CFG_GROUP_PASS_TIME[] stuGroupPassTimeArr = new STU_DOOR_CFG_GROUP_PASS_TIME[NetDefs.MAX_DOOR_GROUP_PASS_TIME_NUM]; + public byte[] reserved = new byte[64]; // 保留参数 + + public STU_DOOR_CFG_GROUP_PASS_TIMES_GET_OUT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nCount", "stuGroupPassTimeArr", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_PASS_TIMES_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_PASS_TIMES_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + //添加权限组与通行时段关系信息输入参数 + public static class STU_DOOR_CFG_GROUP_PASS_TIME_ADD_IN_PARAM extends Structure + { + public int bEnable; // 是否使能 + public int emAccessType; // 访问验证方式,EM_DOOR_ACCESS_TYPE + public byte[] szGroupName = new byte[128]; // 权限组名称,必须存在该组名 + public int nPassTimeID; // 通行时段ID,必须存在该时段 + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "emAccessType", "szGroupName", "nPassTimeID", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_PASS_TIME_ADD_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_PASS_TIME_ADD_IN_PARAM implements Structure.ByValue + { + } + } + + //添加权限组与通行时段关系信息输出参数 + public static class STU_DOOR_CFG_GROUP_PASS_TIME_ADD_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_PASS_TIME_ADD_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_PASS_TIME_ADD_OUT_PARAM implements Structure.ByValue + { + } + } + + //更新权限组与通行时段关系信息输入参数 + public static class STU_DOOR_CFG_GROUP_PASS_TIME_UPDATE_IN_PARAM extends Structure + { + public int bEnable; // 是否使能 + public int emAccessType; // 访问验证方式,EM_DOOR_ACCESS_TYPE + public byte[] szGroupName = new byte[128]; // 权限组名称,必须存在该组名 + public int nPassTimeID; // 通行时段ID,必须存在该时段 + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bEnable", "emAccessType", "szGroupName", "nPassTimeID", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_PASS_TIME_UPDATE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_PASS_TIME_UPDATE_IN_PARAM implements Structure.ByValue + { + } + } + + //更新权限组与通行时段关系信息输出参数 + public static class STU_DOOR_CFG_GROUP_PASS_TIME_UPDATE_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_PASS_TIME_UPDATE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_PASS_TIME_UPDATE_OUT_PARAM implements Structure.ByValue + { + } + } + + //删除权限组与通行时段关系信息输入参数 + public static class STU_DOOR_CFG_GROUP_PASS_TIME_REMOVE_IN_PARAM extends Structure + { + public byte[] szGroupName = new byte[128]; // 权限组名称,必须存在该组 + public int nPassTimeID; // 通行时段ID,必须存在该时段 + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szGroupName", "nPassTimeID", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_PASS_TIME_REMOVE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_PASS_TIME_REMOVE_IN_PARAM implements Structure.ByValue + { + } + } + + //删除权限组与通行时段关系信息输出参数 + public static class STU_DOOR_CFG_GROUP_PASS_TIME_REMOVE_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_GROUP_PASS_TIME_REMOVE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_GROUP_PASS_TIME_REMOVE_OUT_PARAM implements Structure.ByValue + { + } + } + + //查询人员信息输入参数 + public static class STU_DOOR_CFG_PERSONS_GET_IN_PARAM extends Structure + { + public int emPersonType; // 需查询的人员类型(必选),EM_DOOR_PERSON_TYPE + public int nOffset; // 一次查询的人员偏移索引,0 则从头开始查询 + public int nCount; // 一次查询的人员数目, 查询一次不超过 MAX_ONCE_DOOR_PERSON_GET_NUM 个 + public int bCondition; // 是否启用条件查询 + public byte[] szGroupName = new byte[128]; // 启用条件查询有效-所属权限组(可选) + public byte[] szCodeLike = new byte[128]; // 启用条件查询有效-编号模糊条件(可选) + public byte[] szNameLike = new byte[128]; // 启用条件查询有效-姓名模糊条件(可选) + public STU_TIME_EX stuGuestAccessStartTime; // 访客准入开始时间(可选) + public STU_TIME_EX stuGuestAccessEndTime; // 访客准入结束时间(可选) + public byte[] szCode = new byte[128]; // 启用条件查询有效-编号精确查询条件(可选) + public byte[] reserved = new byte[352]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emPersonType", "nOffset", "nCount", + "bCondition", "szGroupName", "szCodeLike", "szNameLike", + "stuGuestAccessStartTime", "stuGuestAccessEndTime", "szCode", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PERSONS_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PERSONS_GET_IN_PARAM implements Structure.ByValue + { + } + } + + //查询人员信息输出参数 + public static class STU_DOOR_CFG_PERSONS_GET_OUT_PARAM extends Structure + { + public int nPersonCount; // 人员个数 + // 查询到的人员信息数组 + public STU_DOOR_PERSON_INFO[] stuPersonArr = new STU_DOOR_PERSON_INFO[NetDefs.MAX_DOOR_ONCE_PERSON_GET_NUM]; + public byte[] reserved = new byte[64]; // 保留参数 + + public STU_DOOR_CFG_PERSONS_GET_OUT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nPersonCount", "stuPersonArr", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PERSONS_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PERSONS_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + //添加人员信息输入参数 + public static class STU_DOOR_CFG_PERSON_ADD_IN_PARAM extends Structure + { + public STU_DOOR_PERSON_INFO stuPerson; // 人员信息 + public STU_FACE_IMAGE stuFace; // 人员人脸图片,如果有图片数据则添加; + public int nParams1; // 参数 1(暂不启用) + + public int bDisableAddInfo; // 是否修改人员信息,TRUE - 禁用,FALSE - 不禁用,默认不禁用 + public int bDisableAddImage; // 是否修改人脸图片,TRUE - 禁用,FALSE - 不禁用,默认不禁用 + + + public byte[] reserved = new byte[52]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stuPerson", "stuFace", "nParams1", + "bDisableAddInfo", "bDisableAddImage", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PERSON_ADD_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PERSON_ADD_IN_PARAM implements Structure.ByValue + { + } + } + + //添加人员信息输出参数 + public static class STU_DOOR_CFG_PERSON_ADD_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PERSON_ADD_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PERSON_ADD_OUT_PARAM implements Structure.ByValue + { + } + } + + // 更新人员信息输入参数,可用于单独修改人员信息/人脸图片,或同时修改 + public static class STU_DOOR_CFG_PERSON_UPDATE_IN_PARAM extends Structure + { + public int bDisableUpdateInfo; // 是否修改人员信息,TRUE - 禁用,FALSE - 不禁用,默认不禁用 + public STU_DOOR_PERSON_INFO stuPerson; // 人员信息 + // 人员编号必须存在,不存在则失败. + + public int bDisableUpdateImage; // 是否修改人脸图片,TRUE - 禁用,FALSE - 不禁用,默认不禁用 + public STU_FACE_IMAGE stuFace; // 人员人脸图片,如果有图片数据则更新 + + public int nParams1; // 参数 1(暂不启用) + public byte[] reserved = new byte[244]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bDisableUpdateInfo", "stuPerson", + "bDisableUpdateImage", "stuFace", "nParams1", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PERSON_UPDATE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PERSON_UPDATE_IN_PARAM implements Structure.ByValue + { + } + } + + //更新人员信息输出参数 + public static class STU_DOOR_CFG_PERSON_UPDATE_OUT_PARAM extends Structure + { + public int nPersonID; // 人员内部 ID,不能设置 + public byte[] szFaceToken = new byte[64]; // 人脸 Token + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nPersonID", "szFaceToken", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PERSON_UPDATE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PERSON_UPDATE_OUT_PARAM implements Structure.ByValue + { + } + } + + //设置人员类型输入参数 + public static class STU_DOOR_CFG_PERSON_TYPE_SET_IN_PARAM extends Structure + { + public byte[] szCode = new byte[128]; // 人员编号 + public int emType; // 人员类型,EM_DOOR_PERSON_TYPE + // 未知类型默认按黑名单类型 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szCode", "emType", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PERSON_TYPE_SET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PERSON_TYPE_SET_IN_PARAM implements Structure.ByValue + { + } + } + + //设置人员类型输出参数 + public static class STU_DOOR_CFG_PERSON_TYPE_SET_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PERSON_TYPE_SET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PERSON_TYPE_SET_OUT_PARAM implements Structure.ByValue + { + } + } + + //删除指定编号人员信息输入参数 + public static class STU_DOOR_CFG_PERSON_REMOVE_IN_PARAM extends Structure + { + public byte[] szCode = new byte[128]; // 需要删除的人员编号 + public byte[] szCertificateType = new byte[64]; // 证件类型,可选,空则无效 + public int nParams1; // 参数 1(暂不启用) + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szCode", "szCertificateType", "nParams1", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PERSON_REMOVE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PERSON_REMOVE_IN_PARAM implements Structure.ByValue + { + } + } + + //删除指定编号人员信息输出参数 + public static class STU_DOOR_CFG_PERSON_REMOVE_OUT_PARAM extends Structure + { + public int nError; // 错误码 + public byte[] szCode = new byte[128]; // 人员编号 + public byte[] reserved = new byte[32]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nError", "szCode", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PERSON_REMOVE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PERSON_REMOVE_OUT_PARAM implements Structure.ByValue + { + } + } + + //获取指定人员编号的人员关联图片输入参数 + public static class STU_DOOR_CFG_PERSON_IMAGE_GET_IN_PARAM extends Structure + { + public byte[] szCode = new byte[128]; // 人员编号 + public byte[] szImagePath = new byte[260]; // 保存到本地的图片路径 + public byte[] szCertificateType = new byte[64]; // 证件类型,可选,空则无效 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szCode", "szImagePath", "szCertificateType", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PERSON_IMAGE_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PERSON_IMAGE_GET_IN_PARAM implements Structure.ByValue + { + } + } + + //获取指定人员编号的人员关联图片输出参数 + public static class STU_DOOR_CFG_PERSON_IMAGE_GET_OUT_PARAM extends Structure + { + public int nImageLength; // 图片大小(字节) + public byte[] szImagePath = new byte[260]; // 图片路径 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nImageLength", "szImagePath", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PERSON_IMAGE_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PERSON_IMAGE_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 获取指定人员编号的人员关联图片信息输入参数 + public static class STU_DOOR_CFG_PERSON_IMAGE_INFO_GET_IN_PARAM extends Structure + { + public byte[] szCode = new byte[128]; // 人员编号 + public byte[] szCertificateType = new byte[64]; // 证件类型,可选,空则无效 + public int nInBufSize; // 申请的图片缓存大小,可选,不填则不获取,不超过1M + public byte[] reserved = new byte[60]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szCode", "szCertificateType", "nInBufSize", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PERSON_IMAGE_INFO_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PERSON_IMAGE_INFO_GET_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取指定人员编号的人员关联图片信息输出参数 + public static class STU_DOOR_CFG_PERSON_IMAGE_INFO_GET_OUT_PARAM extends Structure + { + public int nPersonID; // 人员ID + public byte[] szFaceToken = new byte[64]; // 人脸标识符 + public Pointer lpOutBuffer; // 图片二进制数据,需外部申请,大小为nInBufSize + public int nOutBufSize; // 图片数据大小 + public byte[] reserved = new byte[248]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nPersonID", "szFaceToken", "lpOutBuffer", + "nOutBufSize", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PERSON_IMAGE_INFO_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PERSON_IMAGE_INFO_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 门禁人员查询输入参数 + public static class STU_DOOR_CFG_PERSON_COUNT_GET_IN_PARAM extends Structure + { + public int emType; // 人员类型,EM_DOOR_PERSON_TYPE + public int bCondition; // 是否启用条件查询 + public byte[] szGroupName = new byte[128]; // 启用条件查询有效-所属权限组(可选) + public byte[] szCodeLike = new byte[128]; // 启用条件查询有效-编号模糊条件(可选) + public byte[] szNameLike = new byte[128]; // 启用条件查询有效-姓名模糊条件(可选) + public byte[] reserved = new byte[256]; // 预留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emType", "bCondition", "szGroupName", + "szCodeLike", "szNameLike", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PERSON_COUNT_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PERSON_COUNT_GET_IN_PARAM implements Structure.ByValue + { + } + } + + // 门禁人员查询输出参数 + public static class STU_DOOR_CFG_PERSON_COUNT_GET_OUT_PARAM extends Structure + { + public int emType; // 人员类型,EM_DOOR_PERSON_TYPE + public int nPersonCount; // 人员个数 + public byte[] reserved = new byte[64]; // 预留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emType", "nPersonCount", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PERSON_COUNT_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PERSON_COUNT_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + ////////////////////////////////////////////////////////////////////////////////////// + // 人员信息输入参数 + public static class STU_DOOR_CFG_PERSON_MULTI_ADD_INFO extends Structure + { + public STU_DOOR_PERSON_INFO stPersonInfo = new STU_DOOR_PERSON_INFO(); // 人员信息 + public STU_FACE_IMAGE stFaceImage = new STU_FACE_IMAGE(); // 人脸图片 + public int nCardNumber; // 导入的卡数量,不需要则填0,目前最多支持MAX_DOOR_MULTI_ADD_CARD_NUM个 + public STU_DOOR_CARD_INFO[] stCardInfos = new STU_DOOR_CARD_INFO[NetDefs.MAX_DOOR_MULTI_ADD_CARD_NUM]; // 卡信息数组 + + public STU_DOOR_CFG_PERSON_MULTI_ADD_INFO() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"stPersonInfo", "stFaceImage", "nCardNumber", "stCardInfos"}); + } + + public static class ByReference extends STU_DOOR_CFG_PERSON_MULTI_ADD_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PERSON_MULTI_ADD_INFO implements Structure.ByValue + { + } + } + + // 批量添加人员信息输入参数 + public static class STU_DOOR_CFG_PERSON_MULTI_ADD_PARAM extends Structure + { + // 单次批量导入人员数量, 最大MAX_DOOR_MULTI_ADD_PERSON_NUM个 + public int nPersonCount; + // 单次批量导入人员信息数组 + public STU_DOOR_CFG_PERSON_MULTI_ADD_INFO[] stPersonInfoArray = new STU_DOOR_CFG_PERSON_MULTI_ADD_INFO[NetDefs.MAX_DOOR_MULTI_ADD_PERSON_NUM]; + // 导入模式,0 - 批量添加,1 - 批量修改 + public int nMode; + // 参数 1(暂不启用) + public int nParams1; + // 保留参数 + public byte[] reserved = new byte[64]; + + public STU_DOOR_CFG_PERSON_MULTI_ADD_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nPersonCount", "stPersonInfoArray", "nMode", "nParams1", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PERSON_MULTI_ADD_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PERSON_MULTI_ADD_PARAM implements Structure.ByValue + { + } + } + + // 门禁批量导入人员结果 + public static class STU_DOOR_CFG_PERSON_MULTI_ADD_RESULT extends Structure + { + public int bSuccess; // 当前人员导入是否成功 + public int nErrorCode; // 当前人员导入错误码 + + public byte[] szCode = new byte[128]; // 当前导入的人员ID,与导入时传入的szCode(人员编号)对应 + public byte[] szFaceToken = new byte[64]; // 当前人员导入成功后返回的faceToken + + public int nCurCount; // 已导入的人员数量,从1开始,-1表示接口调用失败 + public int nTotal; // 批量导入总数,对应导入时指定的数量 + // *注:nCurCount >= (total - 1)表示此次批量导入已完成 + + public byte[] reserved = new byte[512]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bSuccess", "nErrorCode", "szCode", + "szFaceToken", "nCurCount", "nTotal", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_PERSON_MULTI_ADD_RESULT implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_PERSON_MULTI_ADD_RESULT implements Structure.ByValue + { + } + } + + ////////////////////////////////////////////////////////////////////////////////////// + //获取门禁卡号信息输入参数 + public static class STU_DOOR_CFG_CARDS_GET_IN_PARAM extends Structure + { + public int nOffset; // 查询的偏移位置 + public int nCount; // 查询的卡号个数,不超过MAX_DOOR_ONCE_CARD_GET_NUM + public int bCondition; // 是否条件查询 + // 如果不启用条件查询则获取所有卡号信息 + public byte[] szPersonCode = new byte[128]; // 启用条件查询-人员编号(必选) + public byte[] szCardID = new byte[128]; // 启用条件查询-卡号(可选) + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nOffset", "nCount", "bCondition", + "szPersonCode", "szCardID", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_CARDS_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_CARDS_GET_IN_PARAM implements Structure.ByValue + { + } + } + + //获取门禁卡号信息输出参数 + public static class STU_DOOR_CFG_CARDS_GET_OUT_PARAM extends Structure + { + public int nCardCount; // 实际获取的卡号信息个数 + // 卡号信息数组 + public STU_DOOR_CARD_INFO[] stuCardArr = new STU_DOOR_CARD_INFO[NetDefs.MAX_DOOR_ONCE_CARD_GET_NUM]; + public byte[] reserved = new byte[64]; // 保留参数 + + public STU_DOOR_CFG_CARDS_GET_OUT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nCardCount", "stuCardArr", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_CARDS_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_CARDS_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + //添加门禁卡信息输入参数 + public static class STU_DOOR_CFG_CARD_ADD_IN_PARAM extends Structure + { + public STU_DOOR_CARD_INFO stuCard; // 卡信息 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stuCard", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_CARD_ADD_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_CARD_ADD_IN_PARAM implements Structure.ByValue + { + } + } + + //添加门禁卡信息输出参数 + public static class STU_DOOR_CFG_CARD_ADD_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_CARD_ADD_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_CARD_ADD_OUT_PARAM implements Structure.ByValue + { + } + } + + //更新门禁卡信息输入参数 + public static class STU_DOOR_CFG_CARD_UPDATE_IN_PARAM extends Structure + { + public STU_DOOR_CARD_INFO stuCard; // 卡信息 + // 卡编号必须存在 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stuCard", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_CARD_UPDATE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_CARD_UPDATE_IN_PARAM implements Structure.ByValue + { + } + } + + //更新门禁卡信息输出参数 + public static class STU_DOOR_CFG_CARD_UPDATE_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_CARD_UPDATE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_CARD_UPDATE_OUT_PARAM implements Structure.ByValue + { + } + } + + //删除门禁卡信息输入参数 + public static class STU_DOOR_CFG_CARD_REMOVE_IN_PARAM extends Structure + { + public byte[] szCardID = new byte[128]; // 卡信息 + public byte[] reserved = new byte[128]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szCardID", "reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_CARD_REMOVE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_CARD_REMOVE_IN_PARAM implements Structure.ByValue + { + } + } + + //删除门禁卡信息输出参数 + public static class STU_DOOR_CFG_CARD_REMOVE_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_CARD_REMOVE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_CARD_REMOVE_OUT_PARAM implements Structure.ByValue + { + } + } + + //查询访问历史记录输入参数 + public static class STU_DOOR_ACCESS_RECORDS_GET_IN_PARAM extends Structure + { + public int nOffset; // 查询偏移索引 + public int nCount; // 查询个数, 不能大于 MAX_DOOR_ONCE_ACCESS_RECORD_GET_NUM + public byte[] szPersonCode = new byte[128]; // 人员编号 ID,为空表示查找所有人员 + public int emType; // 访问类型,EM_DOOR_ACCESS_TYPE,当DOOR_ACCESS_TYPE_UNKNOWN 表示查找所有类型 + public STU_TIME_EX stuStartTime; // 访问开始时间,0 表示不指定开始时间 + public STU_TIME_EX stuEndTime; // 访问结束时间,0 表示不指定结束时间 + public byte[] reserved = new byte[64]; // 保留参数 + + public STU_DOOR_ACCESS_RECORDS_GET_IN_PARAM() + { + stuStartTime = new STU_TIME_EX(); + stuEndTime = new STU_TIME_EX(); + } + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nOffset", "nCount", "szPersonCode", + "emType", "stuStartTime", "stuEndTime", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_RECORDS_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_RECORDS_GET_IN_PARAM implements Structure.ByValue + { + } + } + + //查询访问历史记录输出参数 + public static class STU_DOOR_ACCESS_RECORDS_GET_OUT_PARAM extends Structure + { + public int nRecordCount; // 记录个数 + // 记录信息数组 + public STU_DOOR_ACCESS_RECORD_INFO[] stuRecordArr = new STU_DOOR_ACCESS_RECORD_INFO[NetDefs.MAX_DOOR_ONCE_ACCESS_RECORD_GET_NUM]; + public byte[] reserved = new byte[64]; // 保留参数 + + public STU_DOOR_ACCESS_RECORDS_GET_OUT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nRecordCount", "stuRecordArr", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_RECORDS_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_RECORDS_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + //删除指定条件的访问记录输入参数 + public static class STU_DOOR_ACCESS_RECORDS_REMOVE_IN_PARAM extends Structure + { + public byte[] szPersonCode = new byte[128]; // 人员编号,为空表示所有人员 + public int emAccessType; // 访问类型,EM_DOOR_ACCESS_TYPE,当DOOR_ACCESS_TYPE_UNKNOWN 时表示所有类型 + public STU_TIME_EX stuStartTime; // 需删除的开始时间段,值为 0 不指定开始时间 + public STU_TIME_EX stuEndTime; // 需删除的结束时间段,值为 0 不指定结束时间 + public byte[] reserved = new byte[256]; // 保留参数 + + public STU_DOOR_ACCESS_RECORDS_REMOVE_IN_PARAM() + { + stuStartTime = new STU_TIME_EX(); + stuEndTime = new STU_TIME_EX(); + } + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szPersonCode", "emAccessType", "stuStartTime", "stuEndTime", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_RECORDS_REMOVE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_RECORDS_REMOVE_IN_PARAM implements Structure.ByValue + { + } + } + + //删除指定条件的访问记录输出参数 + public static class STU_DOOR_ACCESS_RECORDS_REMOVE_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_RECORDS_REMOVE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_RECORDS_REMOVE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 获取访问记录条数输入参数 + public static class STU_DOOR_ACCESS_RECORDS_COUNT_GET_IN_PARAM extends Structure + { + public int bCondition; // 是否启用查询条件 + public byte[] szPersonCode = new byte[128]; // 人员编号,为空则表示查询所有人员的记录 + public int emAccessType; // DOOR_ACCESS_TYPE_UNKNOWN 表示查询所有类型, EM_DOOR_ACCESS_TYPE + public STU_TIME_EX stuStartTime; // 查询开始时间,均为 0 表示不限制开始时间查询 + public STU_TIME_EX stuEndTime; // 查询结束时间,均为 0 表示不限制结束时间查询 + public byte[] reserved = new byte[128]; // 保留参数 + + public STU_DOOR_ACCESS_RECORDS_COUNT_GET_IN_PARAM() + { + stuStartTime = new STU_TIME_EX(); + stuEndTime = new STU_TIME_EX(); + } + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bCondition", "szPersonCode", "emAccessType", + "stuStartTime", "stuEndTime", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_RECORDS_COUNT_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_RECORDS_COUNT_GET_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取访问记录条数输出参数 + public static class STU_DOOR_ACCESS_RECORDS_COUNT_GET_OUT_PARAM extends Structure + { + public int nCount; // 获取到的访问记录条数 + public byte[] reserved = new byte[16]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nCount", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_RECORDS_COUNT_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_RECORDS_COUNT_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 获取访问记录对应 ID 的抓图图片 + public static class STU_DOOR_ACCESS_RECORDS_IMAGE_GET_IN_PARAM extends Structure + { + public byte[] szImagePath = new byte[NetDefs.MAX_PATH]; // 需要保存的图片路径 + public int nID; // 日志记录 ID + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szImagePath", "nID", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_RECORDS_IMAGE_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_RECORDS_IMAGE_GET_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取访问记录对应 ID 的抓图图片 + public static class STU_DOOR_ACCESS_RECORDS_IMAGE_GET_OUT_PARAM extends Structure + { + public byte[] szImagePath = new byte[NetDefs.MAX_PATH]; // 图片路径 + public int nImageLength; // 图片大小, KB + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szImagePath", "nImageLength", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_RECORDS_IMAGE_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_RECORDS_IMAGE_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 获取访问记录对应 ID 的抓图图片Ex + public static class STU_DOOR_ACCESS_RECORDS_IMAGE_GET_IN_PARAM_EX extends Structure + { + public int nID; // 日志记录 ID + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nID", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_RECORDS_IMAGE_GET_IN_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_RECORDS_IMAGE_GET_IN_PARAM_EX implements Structure.ByValue + { + } + } + + // 获取访问记录对应 ID 的抓图图片Ex + public static class STU_DOOR_ACCESS_RECORDS_IMAGE_GET_OUT_PARAM_EX extends Structure + { + public Pointer lpszBinBuffer; // 图片数据 + public int nImageLength; // 图片大小, KB + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"lpszBinBuffer", "nImageLength", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_RECORDS_IMAGE_GET_OUT_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_RECORDS_IMAGE_GET_OUT_PARAM_EX implements Structure.ByValue + { + } + } + + // 清除人脸库输入参数 + public static class STU_DOOR_CFG_OPT_PERSON_CLEAR_ALL_IN_PARAM extends Structure + { + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_OPT_PERSON_CLEAR_ALL_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_OPT_PERSON_CLEAR_ALL_IN_PARAM implements Structure.ByValue + { + } + } + + // 清除人脸库输出参数 + public static class STU_DOOR_CFG_OPT_PERSON_CLEAR_ALL_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_CFG_OPT_PERSON_CLEAR_ALL_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_CFG_OPT_PERSON_CLEAR_ALL_OUT_PARAM implements Structure.ByValue + { + } + } + + //图片数据 + public static class STU_IMAGE_DATA extends Structure + { + public Pointer pBuffer; // 图片数据 + public int nBufSize; // 图片数据大小 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"pBuffer", "nBufSize", "reserved"}); + } + + public static class ByReference extends STU_IMAGE_DATA implements Structure.ByReference + { + } + + public static class ByValue extends STU_IMAGE_DATA implements Structure.ByValue + { + } + } + + //面板机显示-Log图片获取输入参数 + public static class STU_DOOR_ACCESS_VIEW_LOG_GET_IN_PARAM extends Structure + { + public byte[] szImagePath = new byte[260]; // 需获取的图片保存路径 + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szImagePath", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_VIEW_LOG_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_VIEW_LOG_GET_IN_PARAM implements Structure.ByValue + { + } + } + + //面板机显示-Log图片获取输出参数 + public static class STU_DOOR_ACCESS_VIEW_LOG_GET_OUT_PARAM extends Structure + { + public int nImageLength; // 图片大小,单位:byte + public byte[] szImagePath = new byte[260]; // 需获取的图片保存路径 + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nImageLength", "szImagePath", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_VIEW_LOG_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_VIEW_LOG_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + //面板机显示-Log图片设置输入参数 + public static class STU_DOOR_ACCESS_VIEW_LOG_SET_IN_PARAM extends Structure + { + public STU_IMAGE_DATA stuImageData; // 图片数据 + public byte[] reserved = new byte[512]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stuImageData", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_VIEW_LOG_SET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_VIEW_LOG_SET_IN_PARAM implements Structure.ByValue + { + } + } + + //面板机显示-Log图片设置输出参数 + public static class STU_DOOR_ACCESS_VIEW_LOG_SET_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_VIEW_LOG_SET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_VIEW_LOG_SET_OUT_PARAM implements Structure.ByValue + { + } + } + + //面板机显示-清除log图片输入参数 + public static class STU_DOOR_ACCESS_VIEW_LOG_CLEAR_IN_PARAM extends Structure + { + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_VIEW_LOG_CLEAR_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_VIEW_LOG_CLEAR_IN_PARAM implements Structure.ByValue + { + } + } + + //面板机显示-清除log图片输出参数 + public static class STU_DOOR_ACCESS_VIEW_LOG_CLEAR_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_VIEW_LOG_CLEAR_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_VIEW_LOG_CLEAR_OUT_PARAM implements Structure.ByValue + { + } + } + + // 设置门禁自定义语音输入参数 + public static class STU_DOOR_ACCESS_VIEW_VOICE_SET_IN_PARAM extends Structure + { + public int nSoundBufSize; // 语音数据大小 + public Pointer pSoundBuf; // 语音数据缓存 + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nSoundBufSize", "pSoundBuf", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_VIEW_VOICE_SET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_VIEW_VOICE_SET_IN_PARAM implements Structure.ByValue + { + } + } + + // 设置门禁自定义语音输出参数 + public static class STU_DOOR_ACCESS_VIEW_VOICE_SET_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_VIEW_VOICE_SET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_VIEW_VOICE_SET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 查询自定义语音信息输入参数 + public static class STU_DOOR_ACCESS_VIEW_VOICE_INFO_GET_IN_PARAM extends Structure + { + public byte[] reserved = new byte[128]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_VIEW_VOICE_INFO_GET_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_VIEW_VOICE_INFO_GET_IN_PARAM implements Structure.ByValue + { + } + } + + // 查询自定义语音信息输出参数 + public static class STU_DOOR_ACCESS_VIEW_VOICE_INFO_GET_OUT_PARAM extends Structure + { + public int bExist; // 是否存在自定义语音 + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bExist", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_VIEW_VOICE_INFO_GET_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_VIEW_VOICE_INFO_GET_OUT_PARAM implements Structure.ByValue + { + } + } + + // 门禁开门一次输入参数 + public static class STU_DOOR_OPEN_ONCE_IN_PARAM extends Structure + { + // 开门后关门的延时秒数 + // 注意:此字段和配置(DEVICE_CFG_DOOR_OPEN_TIME/STU_DOOR_CFG_OPEN_TIME)的开门延时互斥 + // 如果此字段为0,则开门延时按配置所指定的时间,否则按此字段指定的时间 + public int nMillionSeconds; + // 保留参数 + public byte[] reserved = new byte[256]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nMillionSeconds", "reserved"}); + } + + public static class ByReference extends STU_DOOR_OPEN_ONCE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_OPEN_ONCE_IN_PARAM implements Structure.ByValue + { + } + } + + // 门禁开门一次输出参数 + public static class STU_DOOR_OPEN_ONCE_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_OPEN_ONCE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_OPEN_ONCE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 门禁获取门状态输入参数 + public static class STU_DOOR_GET_STATUS_IN_PARAM extends Structure + { + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_GET_STATUS_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_GET_STATUS_IN_PARAM implements Structure.ByValue + { + } + } + + // 门禁获取门状态输出参数 + public static class STU_DOOR_GET_STATUS_OUT_PARAM extends Structure + { + public int emDoorStatus; // 当前门状态, EM_DOOR_STATUS_TYPE + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emDoorStatus", "reserved"}); + } + + public static class ByReference extends STU_DOOR_GET_STATUS_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_GET_STATUS_OUT_PARAM implements Structure.ByValue + { + } + } + + // 触发一次文字/语音提示输入参数 + public static class STU_DOOR_ACCESS_VIEW_SHOW_PROMPT_IN_PARAM extends Structure + { + // 0-显示提示语并播放提示音, 1-只显示提示语, 2-只播放提示音 + public int nType; + // 自定义提示,请按以下格式填写信息: + // 至多5行,每行至多26个字节 + // 英文时,每行至多26个字符,包含换行符"\n" + // 中文时,按utf8编码计算,中文占用3个字节,故每行至多8个汉字 + "\n" + // 中英混合时,按utf8编码计算,中文占用3个字节,故含换行符总长度不要超过26个字节 + // 例:“中英混合例子:abcd\n”,7 * 3 + 5 + public byte[] szCustomTips = new byte[NetDefs.MAX_DOOR_PROMPT_CUSTOM_TIP_LINES * NetDefs.MAX_DOOR_PROMPT_CUSTOM_TIP_SIZE]; + // 自定义文字显示时间, 单位ms + public int nTipsTime; + // (选填)自定义语音文件名,设备支持时可选择传入 + public byte[] szVoiceFileName = new byte[128]; + // 保留参数 + public byte[] reserved = new byte[130]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nType", "szCustomTips", "nTipsTime", "szVoiceFileName", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_VIEW_SHOW_PROMPT_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_VIEW_SHOW_PROMPT_IN_PARAM implements Structure.ByValue + { + } + } + + // 触发一次文字/语音提示输出参数 + public static class STU_DOOR_ACCESS_VIEW_SHOW_PROMPT_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_ACCESS_VIEW_SHOW_PROMPT_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ACCESS_VIEW_SHOW_PROMPT_OUT_PARAM implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 开门附加信息 - 1: 开门发起者信息 + public static class STU_DOOR_OPEN_EXT_CALLER_INFO extends Structure + { + // 房间号 + public byte[] szRoomInfo = new byte[128]; + // 保留参数 + public byte[] reserved = new byte[256]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szRoomInfo", "reserved"}); + } + + public static class ByReference extends STU_DOOR_OPEN_EXT_CALLER_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_OPEN_EXT_CALLER_INFO implements Structure.ByValue + { + } + } + + // 门禁开门一次输入参数Ex + public static class STU_DOOR_OPEN_ONCE_IN_PARAM_EX extends Structure + { + // 开门后关门的延时秒数 + // 注意:此字段和配置(DEVICE_CFG_DOOR_OPEN_TIME/STU_DOOR_CFG_OPEN_TIME)的开门延时互斥 + // 如果此字段为0,则开门延时按配置所指定的时间,否则按此字段指定的时间 + public int nMillionSeconds; + + // 根据定制需求指定附加信息 + // 0 - 不启用附加信息,默认 + // 1 - 附加开门发起者信息 + public int nExt; + // 根据 nExt 指定具体结构体类型, void* + public Pointer lpstExtInfo; + // 附加信息结构体长度 + public int nExtInfoSize; + + // 保留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nMillionSeconds", "nExt", "lpstExtInfo", "nExtInfoSize", "reserved"}); + } + + public static class ByReference extends STU_DOOR_OPEN_ONCE_IN_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_OPEN_ONCE_IN_PARAM_EX implements Structure.ByValue + { + } + } + + // 门禁开门一次输出参数Ex + public static class STU_DOOR_OPEN_ONCE_OUT_PARAM_EX extends Structure + { + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_OPEN_ONCE_OUT_PARAM_EX implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_OPEN_ONCE_OUT_PARAM_EX implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 切换显示界面输入参数 + public static class STU_DOOR_ADVERTISING_SET_SHOW_MODE_IN_PARAM extends Structure + { + // 模式:0 - 人脸识别界面,1 - 广告界面,2 - 屏保界面 + public int nMode; + + // 协议类型 + public int nProtocolType; // 0 - 仅支持设置模式,可切换至屏保界面 + // 1 - 不支持切换到屏保界面, 支持设置窗口区域 + + // 窗口ID + public int nWinId; // nProtocolType = 1时有效 + // 窗口区域 + public STU_RECT_L stuRect; // nProtocolType = 1时有效 + + // 保留参数 + public byte[] reserved = new byte[232]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nMode", "nProtocolType", "nWinId", "stuRect", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ADVERTISING_SET_SHOW_MODE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ADVERTISING_SET_SHOW_MODE_IN_PARAM implements Structure.ByValue + { + } + } + + // 切换显示界面输出参数 + public static class STU_DOOR_ADVERTISING_SET_SHOW_MODE_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[256]; // 保留参数 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_ADVERTISING_SET_SHOW_MODE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ADVERTISING_SET_SHOW_MODE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 删除广告文件输入参数 + public static class STU_DOOR_ADVERTISING_DELETE_FILE_IN_PARAM extends Structure + { + // 广告文件名,全路径 + public byte[] szFileName = new byte[256]; + // 保留参数 + public byte[] reserved = new byte[256]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szFileName", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ADVERTISING_DELETE_FILE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ADVERTISING_DELETE_FILE_IN_PARAM implements Structure.ByValue + { + } + } + + // 删除广告文件输出参数 + public static class STU_DOOR_ADVERTISING_DELETE_FILE_OUT_PARAM extends Structure + { + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_ADVERTISING_DELETE_FILE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ADVERTISING_DELETE_FILE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 重播所有广告输入参数 + public static class STU_DOOR_ADVERTISING_REPLAY_ALL_IN_PARAM extends Structure + { + // 保留参数 + public byte[] reserved = new byte[256]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_ADVERTISING_REPLAY_ALL_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ADVERTISING_REPLAY_ALL_IN_PARAM implements Structure.ByValue + { + } + } + + // 重播所有广告输出参数 + public static class STU_DOOR_ADVERTISING_REPLAY_ALL_OUT_PARAM extends Structure + { + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_ADVERTISING_REPLAY_ALL_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ADVERTISING_REPLAY_ALL_OUT_PARAM implements Structure.ByValue + { + } + } + + // 获取广告文件名称输入参数 + public static class STU_DOOR_ADVERTISING_PRE_FIND_FILE_IN_PARAM extends Structure + { + // 广告文件目录 + public byte[] szDirPath = new byte[NetDefs.MAX_PATH]; + // 文件筛选信息 + public STU_FILE_FILTER[] stFilters = new STU_FILE_FILTER[NetDefs.MAX_FILE_FILTER_COUNT]; + // 保留参数 + public byte[] reserved = new byte[256]; + + public STU_DOOR_ADVERTISING_PRE_FIND_FILE_IN_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"szDirPath", "stFilters", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ADVERTISING_PRE_FIND_FILE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ADVERTISING_PRE_FIND_FILE_IN_PARAM implements Structure.ByValue + { + } + } + + // 广告文件预查询输出参数 + public static class STU_DOOR_ADVERTISING_PRE_FIND_FILE_OUT_PARAM extends Structure + { + // 查找到的文件数量 + public int nFileCount; + // 保留参数 + public byte[] reserved = new byte[256]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nFileCount", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ADVERTISING_PRE_FIND_FILE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ADVERTISING_PRE_FIND_FILE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 获取广告文件名称输入参数 + public static class STU_DOOR_ADVERTISING_GET_FILE_LIST_IN_PARAM extends Structure + { + // 文件查找偏移量 + public int nOffset; + // 文件查询数量, 单次获取的最大文件数量为 MAX_DOOR_ADVERTISING_FILE_COUNT + public int nCount; + // 保留参数 + public byte[] reserved = new byte[64]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nOffset", "nCount", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ADVERTISING_GET_FILE_LIST_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ADVERTISING_GET_FILE_LIST_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取广告文件名称输出参数 + public static class STU_DOOR_ADVERTISING_GET_FILE_LIST_OUT_PARAM extends Structure + { + // 实际获取到的文件数量 + public int nCount; + // 文件信息缓存地址 + public STU_FILE_INFO[] stFileInfoArray = new STU_FILE_INFO[NetDefs.MAX_DOOR_ADVERTISING_FILE_COUNT]; + // 保留参数 + public byte[] reserved = new byte[256]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nCount", "stFileInfoArray", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ADVERTISING_GET_FILE_LIST_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ADVERTISING_GET_FILE_LIST_OUT_PARAM implements Structure.ByValue + { + } + } + + // 设置底部控件显示模式输入参数 + public static class STU_DOOR_ADVERTISING_SET_WIDGET_SHOW_IN_PARAM extends Structure + { + // 显示模式 0-自动模式 1-持续显示 2-持续关闭 3-持续一段时间关闭 + public int nMode; + // 持续时间(s) - nMode为3时生效 + public int nKeepTime; + // 保留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nMode", "nKeepTime", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ADVERTISING_SET_WIDGET_SHOW_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ADVERTISING_SET_WIDGET_SHOW_IN_PARAM implements Structure.ByValue + { + } + } + + // 设置底部控件显示模式输出参数 + public static class STU_DOOR_ADVERTISING_SET_WIDGET_SHOW_OUT_PARAM extends Structure + { + // 保留参数 + public byte[] reserved = new byte[128]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_ADVERTISING_SET_WIDGET_SHOW_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ADVERTISING_SET_WIDGET_SHOW_OUT_PARAM implements Structure.ByValue + { + } + } + + // 预查找广告当前播放文件输入参数 + public static class STU_DOOR_ADVERTISING_PRE_FIND_PLAY_LIST_IN_PARAM extends Structure + { + // 文件类型 0-广告 1-图片 + public int nType; + // 保留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nType", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ADVERTISING_PRE_FIND_PLAY_LIST_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ADVERTISING_PRE_FIND_PLAY_LIST_IN_PARAM implements Structure.ByValue + { + } + } + + // 预查找广告当前播放文件输出参数 + public static class STU_DOOR_ADVERTISING_PRE_FIND_PLAY_LIST_OUT_PARAM extends Structure + { + // 当前播放文件的总数量 + public int nTotalCount; + // 保留参数 + public byte[] reserved = new byte[128]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nTotalCount", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ADVERTISING_PRE_FIND_PLAY_LIST_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ADVERTISING_PRE_FIND_PLAY_LIST_OUT_PARAM implements Structure.ByValue + { + } + } + + // 查找广告当前播放文件列表输入参数 + public static class STU_DOOR_ADVERTISING_GET_PLAY_LIST_IN_PARAM extends Structure + { + // 单次查询起始偏移 + public int nOffset; + // 单次查询数量,最大 MAX_DOOR_ADVERTISING_PLAY_FILE_COUNT 个 + public int nCount; + // 保留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nOffset", "nCount", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ADVERTISING_GET_PLAY_LIST_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ADVERTISING_GET_PLAY_LIST_IN_PARAM implements Structure.ByValue + { + } + } + + // 查找广告当前播放文件列表输出参数 + public static class STU_DOOR_ADVERTISING_GET_PLAY_LIST_OUT_PARAM extends Structure + { + // 当前播放文件实际数量 + public int nCount; + // 当前播放文件信息列表 + public STU_FILE_INFO[] stFileInfoArray = new STU_FILE_INFO[NetDefs.MAX_DOOR_ADVERTISING_PLAY_FILE_COUNT]; + // 保留参数 + public byte[] reserved = new byte[128]; + + public STU_DOOR_ADVERTISING_GET_PLAY_LIST_OUT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nCount", "stFileInfoArray", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ADVERTISING_GET_PLAY_LIST_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ADVERTISING_GET_PLAY_LIST_OUT_PARAM implements Structure.ByValue + { + } + } + + // 设置广告当前播放文件列表输入参数 + public static class STU_DOOR_ADVERTISING_SET_PLAY_LIST_IN_PARAM extends Structure + { + // 文件类型 0-广告 1-图片 + public int nType; + // 需要设置的播放文件数量 + public int nCount; + // 需要设置的播放文件信息列表, STU_FILE_INFO* + public Pointer pstFileInfoArray; + // 保留参数 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nType", "nCount", "pstFileInfoArray", "reserved"}); + } + + public static class ByReference extends STU_DOOR_ADVERTISING_SET_PLAY_LIST_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ADVERTISING_SET_PLAY_LIST_IN_PARAM implements Structure.ByValue + { + } + } + + // 设置广告当前播放文件列表输入参数 + public static class STU_DOOR_ADVERTISING_SET_PLAY_LIST_OUT_PARAM extends Structure + { + // 保留参数 + public byte[] reserved = new byte[128]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_DOOR_ADVERTISING_SET_PLAY_LIST_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_DOOR_ADVERTISING_SET_PLAY_LIST_OUT_PARAM implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 设备管理(ldm) + + // 单个设备管理能力 + public static class STU_LDM_PROTOCOL extends Structure + { + public int nDefaultPort; // 默认端口号 + public byte[] szSupportProtocol = new byte[32]; // 协议名称 + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nDefaultPort", "szSupportProtocol", "reserved"}); + } + + public static class ByReference extends STU_LDM_PROTOCOL implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_PROTOCOL implements Structure.ByValue + { + } + } + + // LDM 通道信息 + public static class STU_LDM_UNIQUE_CHANNEL extends Structure + { + public int nUniChannel; // 本地通道号 + public int emConnState; // 连接状态, EM_CHANNEL_CONNECT_STATE + public int emConnError; // 连接错误信息, EM_CHANNEL_CONNECT_ERROR + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nUniChannel", "emConnState", "emConnError", "reserved"}); + } + + public static class ByReference extends STU_LDM_UNIQUE_CHANNEL implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_UNIQUE_CHANNEL implements Structure.ByValue + { + } + } + + // LDM 设备通道信息 + public static class STU_LDM_DEVICE_CHANNEL extends Structure + { + public int nUniChannel; // 本地通道号 + public int nDevChannel; // 前端设备通道号 + + public byte[] szID = new byte[128]; // 设备 ID + + // 前端设备信息 + public int bMap; // 是否已映射 LDM 通道 + public byte[] szDevClass = new byte[64]; // 远程设备大类 + public byte[] szDevType = new byte[64]; // 远程设备型号 + public byte[] szDevSN = new byte[64]; // 远程设备序列号 + public byte[] szDevMac = new byte[40]; // 远程设备网卡 MAC + public byte[] szDevVersion = new byte[32]; // 远程设备软件版本号 + public byte[] szDevAddress = new byte[128]; // 远程设备地址 + public byte[] szProtocol = new byte[32]; // 协议名称 + public byte[] szUser = new byte[32]; // 用户名称 + public int nPort; // 远程设备的端口. + public int nVideoInChannels; // 视频通道输入个数 + public int nAudioInChannels; // 音频通道输入个数 + + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nUniChannel", "nDevChannel", "szID", + "bMap", "szDevClass", "szDevType", "szDevSN", "szDevMac", "szDevVersion", + "szDevAddress", "szProtocol", "szUser", "nPort", "nVideoInChannels", + "nAudioInChannels", "reserved"}); + } + + public static class ByReference extends STU_LDM_DEVICE_CHANNEL implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_DEVICE_CHANNEL implements Structure.ByValue + { + } + } + + // LDM 通道映射 + public static class STU_LDM_CHANNEL_MAP extends Structure + { + public int nUniChannel; // 本地通道号 + public int nDevChannel; // 前端设备通道号 + public byte[] reserved = new byte[16]; // 预留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nUniChannel", "nDevChannel", "reserved"}); + } + + public static class ByReference extends STU_LDM_CHANNEL_MAP implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_CHANNEL_MAP implements Structure.ByValue + { + } + } + + // LDM 通道映射结果 + public static class STU_LDM_CHANNEL_MAP_RESULT extends Structure + { + public int nResult; // 0 - 成功; 1 - 通道不支持设置 + public int nUniChannel; // 本地通道号 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nUniChannel", "nDevChannel", "reserved"}); + } + + public static class ByReference extends STU_LDM_CHANNEL_MAP_RESULT implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_CHANNEL_MAP_RESULT implements Structure.ByValue + { + } + } + + // 设备状态通知信息 + public static class STU_LDM_DEVICE_STATE_INFO extends Structure + { + public int nToken; // 订阅 ID + public int nUniChannel; // 本地通道号 + + public int emConnState; // 通道连接状态, EM_CHANNEL_CONNECT_STATE + + public byte[] reserved = new byte[1024]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nToken", "nUniChannel", "emConnState", "reserved"}); + } + + public static class ByReference extends STU_LDM_DEVICE_STATE_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_DEVICE_STATE_INFO implements Structure.ByValue + { + } + } + + // LDM设备搜索信息 + public static class STU_LDM_DEVICE extends Structure + { + public byte[] szID = new byte[128]; // 设备 ID 标识 + + // 前端设备信息 + public int bEnable; // 是否启用 + public byte[] szDevClass = new byte[64]; // 远程设备大类 + public byte[] szDevType = new byte[64]; // 远程设备型号 + public byte[] szDevName = new byte[64]; // 远程设备名称 + public byte[] szDevSN = new byte[64]; // 远程设备序列号 + public byte[] szDevMac = new byte[40]; // 远程设备网卡 MAC + public byte[] szDevVersion = new byte[32]; // 远程设备软件版本号 + public byte[] szDevAddress = new byte[128]; // 远程设备地址 + public byte[] szProtocol = new byte[32]; // 协议名称 + public byte[] szUser = new byte[32]; // 用户名称 + public int nPort; // 远程设备的端口. + + public int nVideoInChannels; // 视频通道输入个数 + public int nAudioInChannels; // 音频通道输入个数 + + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szID", "bEnable", "szDevClass", "szDevType", + "szDevName", "szDevSN", "szDevMac", "szDevVersion", "szDevAddress", "szProtocol", + "szUser", "nPort", "nVideoInChannels", "nAudioInChannels", "reserved"}); + } + + public static class ByReference extends STU_LDM_DEVICE implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_DEVICE implements Structure.ByValue + { + } + } + + // 获取设备管理能力输入参数 + public static class STU_LDM_OPT_GET_CAPS_IN_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_GET_CAPS_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_GET_CAPS_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取设备管理能力输出参数 + public static class STU_LDM_OPT_GET_CAPS_OUT_PARAM extends Structure + { + public int nError; // 错误码,0-无错误 + public int nProtocolNum; // 实际协议数量(不超过 MAX_LDM_PROTOCOL_NUM) + // 协议数组 + public STU_LDM_PROTOCOL[] stuProtocols = new STU_LDM_PROTOCOL[NetDefs.MAX_LDM_PROTOCOL_NUM]; + public byte[] reserved = new byte[64]; // 保留位 + + STU_LDM_OPT_GET_CAPS_OUT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nError", "nProtocolNum", "stuProtocols", "reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_GET_CAPS_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_GET_CAPS_OUT_PARAM implements Structure.ByValue + { + } + } + + // 获取视频输入通道信息输入参数 + public static class STU_LDM_OPT_GET_VIDEOIN_CHANNEL_IN_PARAM extends Structure + { + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_GET_VIDEOIN_CHANNEL_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_GET_VIDEOIN_CHANNEL_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取视频输入通道信息输出参数 + public static class STU_LDM_OPT_GET_VIDEOIN_CHANNEL_OUT_PARAM extends Structure + { + public int nError; // 错误码,0-无错误 + public int nMaxLocal; // 最大本地视频通道总数 + public int nCurLocal; // 已配置的本地视频通道总数 + public int nMaxRemote; // 最大远程视频通道总数 + public int nCurRemote; // 已配置的远程视频通道总数 + public byte[] reserve = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nError", "nMaxLocal", "nCurLocal", + "nMaxRemote", "nCurRemote", "reserve"}); + } + + public static class ByReference extends STU_LDM_OPT_GET_VIDEOIN_CHANNEL_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_GET_VIDEOIN_CHANNEL_OUT_PARAM implements Structure.ByValue + { + } + } + + // 获取前端设备通道信息输入参数 + public static class STU_LDM_OPT_GET_DEVICE_CHANNEL_IN_PARAM extends Structure + { + public byte[] szAddress = new byte[128]; // IP / URL 地址 + public byte[] szProtocol = new byte[32]; // 协议名称(通过获取设备管理能力获取支持的协议) + public byte[] szUser = new byte[32]; // 远程设备的用户名称 + public byte[] szPassword = new byte[128]; // 远程设备的密码 + public int nPort; // 远程设备端口号 + + public byte[] reserved = new byte[256]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"szAddress", "szProtocol", "szUser", + "szPassword", "nPort", "reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_GET_DEVICE_CHANNEL_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_GET_DEVICE_CHANNEL_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取前端设备通道信息输出参数 + public static class STU_LDM_OPT_GET_DEVICE_CHANNEL_OUT_PARAM extends Structure + { + public int nError; // 错误码,0-无错误 + public int nMaxChannels; // 设备通道总数 + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nError", "nMaxChannels", "reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_GET_DEVICE_CHANNEL_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_GET_DEVICE_CHANNEL_OUT_PARAM implements Structure.ByValue + { + } + } + + // 获取前端设备状态输入参数 + public static class STU_LDM_OPT_GET_DEVICE_STATE_IN_PARAM extends Structure + { + public int nChannelNum; // 需要获取的通道总数 + // 如果 = 0,表示获取所有通道状态 + // 通道号数组 + public int[] nChannelArr = new int[NetDefs.MAX_LDM_CHANNEL_NUM]; + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannelNum", "nChannelArr", "reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_GET_DEVICE_STATE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_GET_DEVICE_STATE_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取前端设备状态输出参数 + public static class STU_LDM_OPT_GET_DEVICE_STATE_OUT_PARAM extends Structure + { + public int nError; // 错误码,0-无错误 + public int nChannelNum; // 实际通道数 + // 通道信息数组 + public STU_LDM_UNIQUE_CHANNEL[] stuChannelArr = new STU_LDM_UNIQUE_CHANNEL[NetDefs.MAX_LDM_CHANNEL_NUM]; + public byte[] reserved = new byte[64]; // 保留位 + + STU_LDM_OPT_GET_DEVICE_STATE_OUT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nError", "nChannelNum", "stuChannelArr", "reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_GET_DEVICE_STATE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_GET_DEVICE_STATE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 获取前端设备信息输入参数 + public static class STU_LDM_OPT_GET_DEVICE_IN_PARAM extends Structure + { + public int nChannelNum; // 需要获取的通道总数 + // 如果 = 0,表示获取所有设备信息 + // 通道号数组 + public int[] nChannelArr = new int[NetDefs.MAX_LDM_CHANNEL_NUM]; + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nChannelNum", "nChannelArr", "reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_GET_DEVICE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_GET_DEVICE_IN_PARAM implements Structure.ByValue + { + } + } + + // 获取前端设备信息输出参数 + public static class STU_LDM_OPT_GET_DEVICE_OUT_PARAM extends Structure + { + public int nError; // 错误码,0-无错误 + public int nChannelNum; // 实际通道数 + // 通道信息数组 + public STU_LDM_DEVICE_CHANNEL[] stuChannelArr = new STU_LDM_DEVICE_CHANNEL[NetDefs.MAX_LDM_CHANNEL_NUM]; + public byte[] reserved = new byte[64]; // 保留位 + + STU_LDM_OPT_GET_DEVICE_OUT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nError", "nChannelNum", "stuChannelArr", "reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_GET_DEVICE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_GET_DEVICE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 添加前端设备信息输入参数 + public static class STU_LDM_OPT_ADD_DEVICE_IN_PARAM extends Structure + { + public int nChannelMapNum; // 通道映射个数 + // 前端设备与如 NVR 通道的映射数组 + // 当 stuChannelMapArr 元素的成员 nUniChannel = -1,表示会选择一个最小的本地设备通道添加 + public STU_LDM_CHANNEL_MAP[] stuChannelMapArr = new STU_LDM_CHANNEL_MAP[NetDefs.MAX_CHANNEL_NUM]; + + public byte[] szDevAddress = new byte[128]; // 前端设备远程地址 + public byte[] szProtocol = new byte[32]; // 协议名称 + public byte[] szUser = new byte[32]; // 前端设备登录用户名 + public byte[] szPassword = new byte[128]; // 前端设备登录密码 + public int nPort; // 前端设备的端口 + + public byte[] reserved = new byte[512]; // 保留位 + + STU_LDM_OPT_ADD_DEVICE_IN_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nChannelMapNum", "stuChannelMapArr", "szDevAddress", + "szProtocol", "szUser", "szPassword", "nPort", "reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_ADD_DEVICE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_ADD_DEVICE_IN_PARAM implements Structure.ByValue + { + } + } + + // 添加前端设备信息输出参数 + public static class STU_LDM_OPT_ADD_DEVICE_OUT_PARAM extends Structure + { + public int nError; // 错误码,0-无错误 + public int nResultNum; // 通道映射结果个数 + // 映射结果数组, 一台前端设备的最大通道数不超过 MAX_CHANNEL_NUM; LDM 的最大接入通道数 MAX_LDM_CHANNEL_NUM + public STU_LDM_CHANNEL_MAP_RESULT[] stuResultArr = new STU_LDM_CHANNEL_MAP_RESULT[NetDefs.MAX_CHANNEL_NUM]; + + public byte[] szID = new byte[128]; // 设备 ID + + public byte[] reserved = new byte[512]; // 保留位 + + STU_LDM_OPT_ADD_DEVICE_OUT_PARAM() + { + for(int i=0; i getFieldOrder() + { + return Arrays.asList(new String [] {"nError", "nResultNum", "stuResultArr", "szID", "reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_ADD_DEVICE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_ADD_DEVICE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 修改前端设备信息输入参数 + public static class STU_LDM_OPT_MODIFY_DEVICE_IN_PARAM extends Structure + { + public int nUniChannel; + public int nDevChannel; + + public byte[] szID = new byte[128]; // 设备 ID 信息, + + public byte[] szDevAddress = new byte[128]; // 前端设备地址 + public byte[] szProtocol = new byte[32]; // 协议名称 + public byte[] szUser = new byte[32]; // 前端设备地址,可输入 IP/URL + public byte[] szPassword = new byte[128]; // 前端设备密码 + public int nPort; // 前端设备的端口 + + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nUniChannel", "nDevChannel", "szID", + "szDevAddress", "szProtocol", "szUser", "szPassword", "nPort", "reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_MODIFY_DEVICE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_MODIFY_DEVICE_IN_PARAM implements Structure.ByValue + { + } + } + + // 修改前端设备信息输出参数 + public static class STU_LDM_OPT_MODIFY_DEVICE_OUT_PARAM extends Structure + { + public int nError; // 错误码,0-无错误 + + public int nUniChannel; // 本地通道号 + public int nDevChannel; // 前端设备通道号 + public int nFailedCode; // 0 - 表示修改成功; 1 - 表示修改失败; + public byte[] szID = new byte[128]; // 设备 ID + + public byte[] reserved = new byte[512]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nError", "nUniChannel", "nDevChannel", + "nFailedCode", "szID", "reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_MODIFY_DEVICE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_MODIFY_DEVICE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 删除前端设备信息输入参数 + public static class STU_LDM_OPT_DELETE_DEVICE_IN_PARAM extends Structure + { + public int nUniChannel; // 本地化通道号 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nUniChannel", "reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_DELETE_DEVICE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_DELETE_DEVICE_IN_PARAM implements Structure.ByValue + { + } + } + + // 删除前端设备信息输出参数 + public static class STU_LDM_OPT_DELETE_DEVICE_OUT_PARAM extends Structure + { + public int nError; // 错误码,0-无错误 + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nError", "reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_DELETE_DEVICE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_DELETE_DEVICE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 搜索前端设备信息输入参数 + // 该接口会调用时会阻塞,建议在回调中仅做设备信息保存,不要在回调中做过多操作 + public static class STU_LDM_OPT_SEARCH_DEVICE_IN_PARAM extends Structure + { + public NetDelegates.fLdmSearchDeviceCallBack cb; // LDM 设备搜索回调 + public Pointer pUser; // 回调的用户参数, void* + public byte[] reserved = new byte[64]; // 预留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"cb", "pUser", "reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_SEARCH_DEVICE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_SEARCH_DEVICE_IN_PARAM implements Structure.ByValue + { + } + } + + // 搜索前端设备信息输出参数 + public static class STU_LDM_OPT_SEARCH_DEVICE_OUT_PARAM extends Structure + { + public int nError; // 错误码 + public byte[] reserved = new byte[64]; // 预留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nError", "reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_SEARCH_DEVICE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_SEARCH_DEVICE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 订阅前端设备信息输入参数 + public static class STU_LDM_OPT_SUBSCRIBE_DEVICE_STATE_IN_PARAM extends Structure + { + public int nUniChannelNum; // 本地通道号个数,如果该 = 0,表示订阅所有通道的设备状态信息 + // 订阅的通道号数组,通道号不能重复 + public int[] nUniChannelArr = new int[NetDefs.MAX_LDM_CHANNEL_NUM]; + + public NetDelegates.fLdmDeviceStateInfoCallBack cb; // 订阅回调 + public int nReservedType; // 订阅回调的保留参数类型(不使用,默认为 0) + public Pointer pReserved; // 订阅回调的保留参数(不使用,默认为 NULL), void* + public Pointer pUser; // 订阅回调的用户参数, void* + + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nUniChannelNum", "nUniChannelArr", "cb", + "nReservedType", "pReserved", "pUser", "reserved", }); + } + + public static class ByReference extends STU_LDM_OPT_SUBSCRIBE_DEVICE_STATE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_SUBSCRIBE_DEVICE_STATE_IN_PARAM implements Structure.ByValue + { + } + } + + // 订阅前端设备信息输出参数 + public static class STU_LDM_OPT_SUBSCRIBE_DEVICE_STATE_OUT_PARAM extends Structure + { + public int nError; // 错误码,0-无错误 + public LLONG lHandle; // 订阅句柄,如果 lHandle 为 0,说明订阅失败;不为 0 则订阅成功 + + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nError", "lHandle", "reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_SUBSCRIBE_DEVICE_STATE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_SUBSCRIBE_DEVICE_STATE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 取消订阅设备信息输入参数 + public static class STU_LDM_OPT_UNSUBSCRIBE_DEVICE_STATE_IN_PARAM extends Structure + { + public LLONG lHandle; // 订阅句柄,取消订阅时该参数必须不为 0 + + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"lHandle", "reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_UNSUBSCRIBE_DEVICE_STATE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_UNSUBSCRIBE_DEVICE_STATE_IN_PARAM implements Structure.ByValue + { + } + } + + // 取消订阅设备信息输出参数 + public static class STU_LDM_OPT_UNSUBSCRIBE_DEVICE_STATE_OUT_PARAM extends Structure + { + public int nError; // 错误码,0-无错误 + + public byte[] reserved = new byte[64]; // 保留位 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nError", "reserved"}); + } + + public static class ByReference extends STU_LDM_OPT_UNSUBSCRIBE_DEVICE_STATE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LDM_OPT_UNSUBSCRIBE_DEVICE_STATE_OUT_PARAM implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 重连结果 + public static class STU_RECONNECT_RESULT_PARAM extends Structure + { + // 是否重连成功 + public int bSuccess; + // 已尝试重连次数 + public int nHaveReconnTimes; + // 重连总次数 + public int nReconnTotalTimes; + // 重连类型, EM_VIRTUAL_INTERFACE_TYPE + public int emInterfaceType; + // 各业务接口返回的句柄,重连类型不为0或-1时有效 + public LLONG lOperateHandle; + // 设备IP + public byte[] szIP = new byte[64]; + // 设备端口号 + public int nPort; + // 设备序列号 + public byte[] szDevSN = new byte[128]; + // 重连错误码 + public int dwError; + // 保留字节 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"bSuccess", "nHaveReconnTimes", "nReconnTotalTimes", "emInterfaceType", + "lOperateHandle", "szIP", "nPort", "szDevSN", "dwError", "reserved"}); + } + + public static class ByReference extends STU_RECONNECT_RESULT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_RECONNECT_RESULT_PARAM implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 网络环境测试结果 + public static class STU_BANDWIDTH_TEST_RESULT extends Structure + { + public float fDuration; // 测试已用时间(s) + public float fBandwidth; // 实时上行带宽(Kbps) + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"fDuration", "fBandwidth", "reserved"}); + } + + public static class ByReference extends STU_BANDWIDTH_TEST_RESULT implements Structure.ByReference + { + } + + public static class ByValue extends STU_BANDWIDTH_TEST_RESULT implements Structure.ByValue + { + } + } + + // 透明串口接口入参信息 + public static class STU_TRANS_COM_IN_PARAM extends Structure + { + public int nTranscomPort; // 透明串口号,从 1 开始 + public int nBaudRate; // 波特率 + public int emDataBit; // 数据位, EM_COM_DATA_BIT_TYPE + public int emStopBit; // 停止位, EM_COM_STOP_BIT_TYPE + public int emParity; // 校验位, EM_COM_PARITY_TYPE + public int emTransMode; // 数据传输方式, EM_TRANS_COM_DATA_TRANS_MODE + public byte[] reserved = new byte[128]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nTranscomPort", "nBaudRate", "emDataBit", + "emStopBit", "emParity", "emTransMode", "reserved"}); + } + + public static class ByReference extends STU_TRANS_COM_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_TRANS_COM_IN_PARAM implements Structure.ByValue + { + } + } + + /////////////////////////////////////////////////////////////////////////////////////////////// + // 视频输入参数结构体 + // 视频输入-获取状态信息的输入参数 + public static class STU_VIDEONIN_OPT_GET_STATUS_IN_PARAM extends Structure + { + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_GET_STATUS_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_GET_STATUS_IN_PARAM implements Structure.ByValue + { + } + } + + // 视频输入-获取状态信息的输出参数 + public static class STU_VIDEONIN_OPT_GET_STATUS_OUT_PARAM extends Structure + { + public int nBrightnessVideo; // 视频快门当前亮度值 + public int nBrightnessPic; // 图片快门当前亮度值 + public int nBrightnessSnap; // 抓拍快门当前亮度值 + + public int nGainVideo; // 视频快门当前增益值 + public int nGainPic; // 图片快门当前增益值 + public int nGainSnap; // 抓拍快门当前增益值 + + public float fExposureValueVideo; // 视频快门曝光时间,单位ms + public float fExposureValuePic; // 图片快门曝光时间,单位ms + public float fExposureValueSnap; // 抓拍快门曝光时间,单位ms + + public int nExtSyncPhaseMode; // 当前外同步信号模式 0-白天,1-晚上,2-其他 + public int nPreviewModeVideo; // 当前视频预处理模式 0-白天,1-晚上,2-其他 + public int nPreviewModeCapture; // 当前图片预处理模式 0-白天,1-晚上,2-其他 + + public int nAfixFlag; // 自动校正标志位, 0:关闭状态,1:开启状态。 + public int nIRMode; // ir模式标志位, 0-白片,1-夜片 + public int nAdjustState; // 当前是否在进行图像矫正, 0 -当前未矫正, 1-当前在矫正 + + public byte[] reserved = new byte[512]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nBrightnessVideo", "nBrightnessPic", "nBrightnessSnap", + "nGainVideo", "nGainPic", "nGainSnap", "fExposureValueVideo", "fExposureValuePic", + "fExposureValueSnap", "nExtSyncPhaseMode", "nPreviewModeVideo", "nPreviewModeCapture", + "nAfixFlag", "nIRMode", "nAdjustState", "reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_GET_STATUS_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_GET_STATUS_OUT_PARAM implements Structure.ByValue + { + } + } + + //视频输入-获取同步信息状态输入参数 + public static class STU_VIDEONIN_OPT_GET_SYNC_STATE_IN_PARAM extends Structure + { + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_GET_SYNC_STATE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_GET_SYNC_STATE_IN_PARAM implements Structure.ByValue + { + } + } + + // 视频输入-获取同步信息状态输出参数 + public static class STU_VIDEONIN_OPT_GET_SYNC_STATE_OUT_PARAM extends Structure + { + public int nStatus; // 同步信息状态 0: 内同步 1: 外同步 + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nStatus", "reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_GET_SYNC_STATE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_GET_SYNC_STATE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 视频输入-测试同步相位点输入参数 + public static class STU_VIDEONIN_OPT_START_SYNCPHASE_TEST_IN_PARAM extends Structure + { + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_START_SYNCPHASE_TEST_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_START_SYNCPHASE_TEST_IN_PARAM implements Structure.ByValue + { + } + } + + // 视频输入-测试同步相位点输出参数 + public static class STU_VIDEONIN_OPT_START_SYNCPHASE_TEST_OUT_PARAM extends Structure + { + public int nMinBrightnessPhase; // 亮度最小时的相位值 + public int nMaxBrightnessPhase; // 亮度最大时的相位值 + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nMinBrightnessPhase", "nMaxBrightnessPhase", "reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_START_SYNCPHASE_TEST_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_START_SYNCPHASE_TEST_OUT_PARAM implements Structure.ByValue + { + } + } + + // 视频输入-取消测试同步相位点输入参数 + public static class STU_VIDEONIN_OPT_STOP_SYNCPHASE_TEST_IN_PARAM extends Structure + { + public byte[] reserved = new byte[128]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_STOP_SYNCPHASE_TEST_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_STOP_SYNCPHASE_TEST_IN_PARAM implements Structure.ByValue + { + } + } + + // 视频输入-取消测试同步相位点输出参数 + public static class STU_VIDEONIN_OPT_STOP_SYNCPHASE_TEST_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[128]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_STOP_SYNCPHASE_TEST_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_STOP_SYNCPHASE_TEST_OUT_PARAM implements Structure.ByValue + { + } + } + + // 视频输入-聚焦调节输入参数 + public static class STU_VIDEONIN_OPT_CONTROL_FOCUS_IN_PARAM extends Structure + { + public float fZoom; // 相对变倍率, 范围0~1,-1表示重置 + public float fFocus; // 相对聚焦变化, 范围0~1,-1表示重置 + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"fZoom", "fFocus", "reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_CONTROL_FOCUS_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_CONTROL_FOCUS_IN_PARAM implements Structure.ByValue + { + } + } + + // 视频输入-聚焦调节输出参数 + public static class STU_VIDEONIN_OPT_CONTROL_FOCUS_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_CONTROL_FOCUS_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_CONTROL_FOCUS_OUT_PARAM implements Structure.ByValue + { + } + } + + // 视频输入-获取聚焦调节信息输入参数 + public static class STU_VIDEONIN_OPT_GET_FOCUS_STATE_IN_PARAM extends Structure + { + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_GET_FOCUS_STATE_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_GET_FOCUS_STATE_IN_PARAM implements Structure.ByValue + { + } + } + + // 视频输入-获取聚焦调节信息输出参数 + public static class STU_VIDEONIN_OPT_GET_FOCUS_STATE_OUT_PARAM extends Structure + { + public int nStatus; // 0 - 正常状态 + // 1 - 正在自动聚焦 + + public float fZoom; // 放大倍数, 范围0~1 + public float fFocus; // 聚焦位置, 范围0~1 + + public int nPeakAutofocus; // 当前AF峰值,辅助聚焦模式下有效。AF峰值最大时,表示达到最佳聚焦效果 + public int nStepZoomMotor; // 变倍电机总步长,对采用步进电机的设备有效 + public int nStepFocusMotor; // 变焦电机总步长,对采用步进电机的设备有效 + + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"nStatus", "fZoom", "fFocus", + "nPeakAutofocus", "nStepZoomMotor", "nStepFocusMotor", "reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_GET_FOCUS_STATE_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_GET_FOCUS_STATE_OUT_PARAM implements Structure.ByValue + { + } + } + + // 视频输入-手动调节聚焦输入参数 + public static class STU_VIDEONIN_OPT_CONTINUE_FOCUS_IN_PARAM extends Structure + { + public float fZoom; // 放大倍数, 范围0~1 + public float fFocus; // 聚焦位置, 范围0~1 + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"fZoom", "fFocus", "reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_CONTINUE_FOCUS_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_CONTINUE_FOCUS_IN_PARAM implements Structure.ByValue + { + } + } + + // 视频输入-手动调节聚焦输出参数 + public static class STU_VIDEONIN_OPT_CONTINUE_FOCUS_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_CONTINUE_FOCUS_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_CONTINUE_FOCUS_OUT_PARAM implements Structure.ByValue + { + } + } + + // 视频输入-开始自动聚焦输入参数 + public static class STU_VIDEONIN_OPT_START_AUTO_FOCUS_IN_PARAM extends Structure + { + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_START_AUTO_FOCUS_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_START_AUTO_FOCUS_IN_PARAM implements Structure.ByValue + { + } + } + + // 视频输入-开始自动聚焦输出参数 + public static class STU_VIDEONIN_OPT_START_AUTO_FOCUS_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_START_AUTO_FOCUS_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_START_AUTO_FOCUS_OUT_PARAM implements Structure.ByValue + { + } + } + + // 视频输入-停止自动聚焦输入参数 + public static class STU_VIDEONIN_OPT_STOP_AUTO_FOCUS_IN_PARAM extends Structure + { + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_STOP_AUTO_FOCUS_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_STOP_AUTO_FOCUS_IN_PARAM implements Structure.ByValue + { + } + } + + // 视频输入-停止自动聚焦输出参数 + public static class STU_VIDEONIN_OPT_STOP_AUTO_FOCUS_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_STOP_AUTO_FOCUS_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_STOP_AUTO_FOCUS_OUT_PARAM implements Structure.ByValue + { + } + } + + // 视频输入-区域聚焦输入参数 + public static class STU_VIDEONIN_OPT_SET_FOCUS_REGION_IN_PARAM extends Structure + { + public int emMode; // 区域聚焦模式, EM_VIDEO_IN_REGION_FOCUS_MODE + public STU_RECT_L stuRect = new STU_RECT_L(); // 聚焦区域 + + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emMode", "stuRect", "reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_SET_FOCUS_REGION_IN_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_SET_FOCUS_REGION_IN_PARAM implements Structure.ByValue + { + } + } + + // 视频输入-区域聚焦输出参数 + public static class STU_VIDEONIN_OPT_SET_FOCUS_REGION_OUT_PARAM extends Structure + { + public byte[] reserved = new byte[256]; // 保留字节 + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"reserved"}); + } + + public static class ByReference extends STU_VIDEONIN_OPT_SET_FOCUS_REGION_OUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEONIN_OPT_SET_FOCUS_REGION_OUT_PARAM implements Structure.ByValue + { + } + } + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 按组上报数据回调信息结构体 + public static class STU_LOAD_DATA_INFO extends Structure + { + // 智能数据结构体, void* + public Pointer pEventInfo; + // 图片数据, BYTE* + public Pointer pBuffer; + // 图片数据长度 + public int dwBufSize; + // 保留字节 + public byte[] reserved = new byte[1024]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"pEventInfo", "pBuffer", "dwBufSize", "reserved"}); + } + + public static class ByReference extends STU_LOAD_DATA_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_LOAD_DATA_INFO implements Structure.ByValue + { + } + } + + // 按组上报数据回调信息结构体集合 + public static class STU_LOAD_DATA_PAIR_INFO extends Structure + { + // 大图数据 + public STU_LOAD_DATA_INFO stLoadWholeData; + + // 抠图数量,结合pstLoadCutoutDataAry使用 + public int nCutoutCount; + // 抠图数据列表,元素数量由 nCount 告知, STU_LOAD_DATA_INFO数组 + public Pointer pstLoadCutoutDataAry; + + // 保留字节 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"stLoadWholeData", "nCutoutCount", "pstLoadCutoutDataAry", "reserved"}); + } + + public static class ByReference extends STU_LOAD_DATA_PAIR_INFO implements Structure.ByReference + { + } + + public static class ByValue extends STU_LOAD_DATA_PAIR_INFO implements Structure.ByValue + { + } + } + + ////////////////////////////////////////////////////////////////////////// + // 设置强制I帧参数 + public static class STU_VIDEO_ENCODE_SET_I_FRAME_PARAM extends Structure + { + // 码流类型, EM_REALPLAY_STREAM_TYPE + public int rType; + // 通道号,从0开始 + public int nChannel; + // 组号,默认0 + public int nGroup; + // 保留字节 + public byte[] reserved = new byte[512]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"rType", "nChannel", "nGroup", "reserved"}); + } + + public static class ByReference extends STU_VIDEO_ENCODE_SET_I_FRAME_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_VIDEO_ENCODE_SET_I_FRAME_PARAM implements Structure.ByValue + { + } + } + + // 按组上报订阅入参 + public static class STU_LOAD_PIC_BY_PAIR_INPUT_PARAM extends Structure + { + // 指定订阅事件类型, EM_EVENT_SP_TYPE + public int emEventType; + // 订阅模式,0 - 实时订阅,1 - 离线订阅 + public int nLoadMode; + // 智能数据回调函数 + public NetDelegates.fAnalyzeDataByPairCallBack cbAnalyzerData; + // 回调用户自定义参数 + public LLONG dwUser; + // 保留字列 + public byte[] reserved = new byte[256]; + + protected List getFieldOrder() + { + return Arrays.asList(new String [] {"emEventType", "nLoadMode", + "cbAnalyzerData", "dwUser", "reserved"}); + } + + public static class ByReference extends STU_LOAD_PIC_BY_PAIR_INPUT_PARAM implements Structure.ByReference + { + } + + public static class ByValue extends STU_LOAD_PIC_BY_PAIR_INPUT_PARAM implements Structure.ByValue + { + } + } +} + +////////////////////////////////////////////////////////////////////////////////////// \ No newline at end of file