ard-work/pom.xml
@@ -31,7 +31,12 @@ <groupId>com.ruoyi</groupId> <artifactId>ruoyi-common</artifactId> </dependency> <!--大华二次开发依赖jar包--> <dependency> <groupId>net.java.dev.jna</groupId> <artifactId>jna</artifactId> <version>5.4.0</version> </dependency> <!--海康录像机二次开发依赖jar包--> <dependency> <groupId>net.java.jna</groupId> ard-work/src/main/java/com/ruoyi/device/camera/controller/ArdCamerasController.java
@@ -7,6 +7,7 @@ import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.camera.service.IArdCamerasService; import com.ruoyi.device.dhsdk.service.IDhClientService; import com.ruoyi.device.hiksdk.service.IHikClientService; import com.ruoyi.device.hiksdk.service.impl.HikClientServiceImpl; import com.ruoyi.common.utils.poi.ExcelUtil; @@ -30,6 +31,7 @@ import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.core.page.TableDataInfo; import java.util.*; /** @@ -44,7 +46,9 @@ @Api(tags = "相机管理接口") public class ArdCamerasController extends BaseController { @Resource private IHikClientService sdk; private IHikClientService hikSdk; @Resource private IDhClientService dhSdk; @Resource private IArdCamerasService ardCamerasService; @Resource @@ -94,11 +98,18 @@ @PostMapping public AjaxResult add(@RequestBody ArdCameras camera) { int i = ardCamerasService.insertArdCameras(camera); if(i>0) { //注销 sdk.loginOut(camera.getId()); //异步登录 sdk.asyncLogin(camera); if (i > 0) { if (camera.getFactory().equals("1")) { //注销 hikSdk.logout(camera.getId()); //异步登录 hikSdk.asyncLogin(camera); } else if(camera.getFactory().equals("2")) { dhSdk.logout(camera.getId()); dhSdk.login(camera); } } return toAjax(i); } @@ -112,11 +123,16 @@ @PutMapping public AjaxResult edit(@RequestBody ArdCameras camera) { int i = ardCamerasService.updateArdCameras(camera); if(i>0) { ArdCameras cameras = ardCamerasService.selectArdCamerasById(camera.getId()); sdk.loginOut(cameras.getId()); sdk.asyncLogin(cameras); if (i > 0) { camera= ardCamerasService.selectArdCamerasById(camera.getId()); if(camera.getFactory().equals("1")) { hikSdk.logout(camera.getId()); hikSdk.asyncLogin(camera); } else if(camera.getFactory().equals("2")) { dhSdk.logout(camera.getId()); dhSdk.login(camera); } } return toAjax(i); } @@ -129,9 +145,9 @@ @Log(title = "相机设备", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable String[] ids) { for(String id :ids) { sdk.loginOut(id); for (String id : ids) { hikSdk.logout(id); dhSdk.logout(id); } return toAjax(ardCamerasService.deleteArdCamerasByIds(ids)); } @@ -152,25 +168,25 @@ } return options; } @GetMapping("/getDeptAndCamera") @ApiOperation("获取部门和相机") public AjaxResult getDeptAndCamera() { public AjaxResult getDeptAndCamera() { Map deptAndCamera = ardCamerasService.getChildDeptAndCamera(true); return AjaxResult.success(deptAndCamera); } @GetMapping("/getDeptAndCameraWithCheckBox") @ApiOperation("获取部门和相机(开启复选框)") public AjaxResult getDeptAndCameraWithCheckBox() { public AjaxResult getDeptAndCameraWithCheckBox() { Map deptAndCamera = ardCamerasService.getChildDeptAndCamera(false); return AjaxResult.success(deptAndCamera); } @PostMapping("/getNearCamerasBycoordinate") @ApiOperation("获取附近的相机") @ApiOperationSupport(includeParameters = {"targetPosition"}) public AjaxResult getNearCamerasBycoordinate(@RequestBody CameraCmd cmd) { public AjaxResult getNearCamerasBycoordinate(@RequestBody CameraCmd cmd) { TreeMap nearCamerasBycoordinate = ardCamerasService.getNearCamerasBycoordinate(cmd); return AjaxResult.success(nearCamerasBycoordinate); } ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java
对比新文件 @@ -0,0 +1,361 @@ package com.ruoyi.device.camera.controller; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.camera.service.IArdCamerasService; import com.ruoyi.device.dhsdk.service.IDhClientService; import com.ruoyi.device.hiksdk.service.IHikClientService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.util.List; import java.util.Map; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.camera.service.IArdCamerasService; import com.ruoyi.device.dhsdk.service.IDhClientService; import com.ruoyi.device.hiksdk.service.IHikClientService; import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.core.domain.AjaxResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.util.List; import java.util.Map; /** * @Description: * @ClassName: CameraSdkController * @Author: 刘苏义 * @Date: 2023年10月14日17:02:56 **/ @Api(tags = "相机通用SDK接口") @Controller @RequestMapping("/cameraSdk") @Anonymous public class CameraSdkController extends BaseController { @Resource private IHikClientService hikClientService; @Resource private IDhClientService dhClientService; @Resource private IArdCamerasService ardCamerasService; /** * @描述 初始加载海康库文件 * @参数 [] * @返回值 void * @创建人 刘苏义 * @创建时间 2023/1/17 16:13 * @修改人和其它信息 if (Platform.isLinux()) */ @PostConstruct public void initHCNetSDK() { //初始化加载sdk库文件 hikClientService.loadHCNetSDKLib(); //登录所有相机 hikClientService.loginAll(); } @RequestMapping("/preview") private String preview() { return "preview"; } @RequestMapping("/index") private String index() { return "test"; } @GetMapping("/list") public @ResponseBody AjaxResult list(ArdCameras ardCamera) { List<ArdCameras> list = ardCamerasService.selectArdCamerasListNoDataScope(ardCamera); return AjaxResult.success("相机列表:", list); } @ApiOperation("获取码流压缩参数") @PostMapping("/getVideoCompressionCfg") @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) @Log(title = "获取码流压缩参数", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult getVideoCompressionCfg(@RequestBody CameraCmd cmd) { return AjaxResult.success(hikClientService.getVideoCompressionCfg(cmd)); } @ApiOperation("在线状态") @PostMapping("/state") @ApiOperationSupport(includeParameters = {"cmd.cameraId"}) @Log(title = "在线状态", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult getOnlineState(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); boolean onLine = hikClientService.isOnLine(cmd); return AjaxResult.success(onLine); } @ApiOperation(value = "云台控制", notes = "Code:1-左上 2-上 3-右上 4-左 5-巡航 6-右 7-左下 8-下 9-右下 10-焦距变大 11-焦距变小\n" + "12-焦点前调 13-焦点后调 14-光圈扩大 15-光圈缩小 16-雨刷开启") @PostMapping("/PTZControlWithSpeed") @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.speed", "cmd.enable", "cmd.code"}) @Log(title = "云台控制", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult PTZControlWithSpeed(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(hikClientService.pTZControlWithSpeed(cmd)); } @ApiOperation("调用预置点") @PostMapping("/gotoPreset") @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.presetIndex"}) @Log(title = "调用预置点", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult gotoPreset(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(hikClientService.gotoPreset(cmd)); } @ApiOperation("设置预置点") @PostMapping("/setPreset") @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.presetIndex"}) @Log(title = "设置预置点", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult setPreset(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(hikClientService.setPreset(cmd)); } @ApiOperation("获取聚焦值") @PostMapping("/getFocusPos") @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) @Log(title = "获取聚焦值", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult getFocusPos(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); Map<String, Object> Map = hikClientService.getFocusPos(cmd); return AjaxResult.success("获取聚焦值", Map); } @ApiOperation("设置聚焦值") @PostMapping("/setFocusPos") @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.dwFocusPos"}) @Log(title = "设置聚焦值", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult setFocusPos(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(hikClientService.setFocusPos(cmd)); } @ApiOperation("获取PTZ") @PostMapping("/getPTZ") @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) @Log(title = "获取PTZ", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult getPTZ(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); Map<String, Object> ptzMap = hikClientService.getPtz(cmd); return AjaxResult.success("获取ptz", ptzMap); } @ApiOperation("获取PTZ范围") @PostMapping("/getPTZScope") @Log(title = "获取PTZ范围", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) public @ResponseBody AjaxResult getPTZScope(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); Map<String, Object> ptzMap = hikClientService.getPtzScope(cmd); return AjaxResult.success("获取ptz范围", ptzMap); } @ApiOperation("设置PTZ") @PostMapping("/setPTZ") @Log(title = "设置PTZ", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.ptzMap"}) public @ResponseBody AjaxResult setPTZ(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(hikClientService.setPtz(cmd)); } @ApiOperation("指向目标") @PostMapping("/setTargetPosition") @Log(title = "指向目标", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.targetPosition"}) public @ResponseBody AjaxResult setTargetPosition(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(hikClientService.guideTargetPosition(cmd)); } @ApiOperation("设置零方位角") @PostMapping("/setZeroPTZ") @Log(title = "设置零方位角", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.cmd.chanNo"}) public @ResponseBody AjaxResult setZeroPTZ(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(hikClientService.setZeroPtz(cmd)); } @ApiOperation("设置锁定") @PostMapping("/setPTZLock") @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.expired"}) @Log(title = "设置锁定", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult setPTZLock(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return AjaxResult.success(hikClientService.controlLock(cmd)); } @ApiOperation("设置解锁") @PostMapping("/setPTZUnLock") @ApiOperationSupport(includeParameters = {"cmd.cameraId"}) @Log(title = "设置解锁", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult setPTZUnLock(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return AjaxResult.success(hikClientService.controlUnLock(cmd)); } @ApiOperation("获取云台锁定信息") @PostMapping("/getPTZLockInfo") @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) @Log(title = "获取云台锁定信息", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult getPTZLockInfo(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); int byWorkMode = hikClientService.getPTZLockInfo(cmd); if (byWorkMode == 0) { return AjaxResult.success("云台锁定状态:解锁"); } else if (byWorkMode == 1) { return AjaxResult.success("云台锁定状态:锁定"); } else { return AjaxResult.error("云台锁定状态:失败"); } } @ApiOperation("透雾开关") @PostMapping("/defogcfg") @Log(title = "透雾开关", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) public @ResponseBody AjaxResult defogcfg(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(hikClientService.controlDefogcfg(cmd)); } @ApiOperation("红外开关") @PostMapping("/infrarecfg") @Log(title = "红外开关", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) public @ResponseBody AjaxResult infrarecfg(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(hikClientService.controlInfrarecfg(cmd)); } @ApiOperation(value = "手动/自动聚焦", notes = "true手动flase自动") @PostMapping("/focusMode") @Log(title = "手动/自动聚焦", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) public @ResponseBody AjaxResult enableFocusMode(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(hikClientService.controlFocusMode(cmd)); } @ApiOperation(value = "获取聚焦模式", notes = "1手动2自动") @PostMapping("/getFocusMode") public @ResponseBody AjaxResult getFocusMode(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); String focusMode = hikClientService.getFocusMode(cmd); return AjaxResult.success(focusMode); } @ApiOperation("云台加热") @PostMapping("/heateRpwron") @Log(title = "云台加热", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) public @ResponseBody AjaxResult heateRpwron(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(hikClientService.controlPTHeateRpwron(cmd)); } @ApiOperation("镜头加热") @PostMapping("/cameraDeicing") @Log(title = "镜头加热", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) public @ResponseBody AjaxResult cameraDeicing(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return toAjax(hikClientService.controlCameraDeicing(cmd)); } @PostMapping("/captureJPEGPicture") public @ResponseBody AjaxResult captureJPEGPicture(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); String base64Str = hikClientService.captureJPEGPicture(cmd); return toAjaxString(base64Str, "相机抓图"); } @ApiOperation("相机抓图") @PostMapping("/picCutCate") @Log(title = "相机抓图", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo"}) public @ResponseBody AjaxResult picCutCate(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); String path = hikClientService.picCutCate(cmd); return toAjaxString(path, "相机抓图"); } @ApiOperation("手动录像") @PostMapping("/record") @Log(title = "手动录像", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) public @ResponseBody AjaxResult record(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); String path = hikClientService.record(cmd); return toAjaxString(path, "手动录像"); } @ApiOperation("获取相机架设参数") @PostMapping("/getCameraSetupCFG") @Log(title = "获取相机架设参数", businessType = BusinessType.CONTROL) @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.enable"}) public @ResponseBody AjaxResult getCameraSetupCFG(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return AjaxResult.success(hikClientService.getGisInfo(cmd)); } } ard-work/src/main/java/com/ruoyi/device/camera/domain/ArdCameras.java
@@ -74,7 +74,11 @@ @Excel(name = "光电类型") private String gdtype; /** * 厂商 */ @Excel(name = "厂商") private String factory; /** * 经度 ard-work/src/main/java/com/ruoyi/device/dhsdk/common/Base64.java
对比新文件 @@ -0,0 +1,553 @@ /* * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ // Base64解码 使用1.8版本源码 鉴于1.8部分特性1.6版本使用不到 故只保留能使用到的代码 其余删除 package com.ruoyi.device.dhsdk.common; import java.nio.ByteBuffer; import java.nio.charset.Charset; import java.util.Arrays; /** * This class consists exclusively of static methods for obtaining * encoders and decoders for the Base64 encoding scheme. The * implementation of this class supports the following types of Base64 * as specified in * <a href="http://www.ietf.org/rfc/rfc4648.txt">RFC 4648</a> and * * <ul> * <li><a name="basic"><b>Basic</b></a> * <p> Uses "The Base64 Alphabet" as specified in Table 1 of * RFC 4648 and RFC 2045 for encoding and decoding operation. * The encoder does not add any line feed (line separator) * character. The decoder rejects data that contains characters * outside the base64 alphabet.</p></li> * * <p> Unless otherwise noted, passing a {@code null} argument to a * method of this class will cause a {@link NullPointerException * NullPointerException} to be thrown. * * @author Xueming Shen * @since 1.8 */ public class Base64 { private Base64() {} /** * Returns a {@link Encoder} that encodes using the * <a href="#basic">Basic</a> type base64 encoding scheme. * * @return A Base64 encoder. */ public static Encoder getEncoder() { return Encoder.RFC4648; } /** * This class implements an encoder for encoding byte data using * the Base64 encoding scheme as specified in RFC 4648 and RFC 2045. * * <p> Instances of {@link Encoder} class are safe for use by * multiple concurrent threads. * * <p> Unless otherwise noted, passing a {@code null} argument to * a method of this class will cause a * {@link NullPointerException NullPointerException} to * be thrown. * * @see Decoder * @since 1.8 */ public static class Encoder { private final byte[] newline; private final int linemax; private final boolean isURL; private final boolean doPadding; private Encoder(boolean isURL, byte[] newline, int linemax, boolean doPadding) { this.isURL = isURL; this.newline = newline; this.linemax = linemax; this.doPadding = doPadding; } /** * This array is a lookup table that translates 6-bit positive integer * index values into their "Base64 Alphabet" equivalents as specified * in "Table 1: The Base64 Alphabet" of RFC 2045 (and RFC 4648). */ private static final char[] toBase64 = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/' }; /** * It's the lookup table for "URL and Filename safe Base64" as specified * in Table 2 of the RFC 4648, with the '+' and '/' changed to '-' and * '_'. This table is used when BASE64_URL is specified. */ private static final char[] toBase64URL = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_' }; static final Encoder RFC4648 = new Encoder(false, null, -1, true); private final int outLength(int srclen) { int len = 0; if (doPadding) { len = 4 * ((srclen + 2) / 3); } else { int n = srclen % 3; len = 4 * (srclen / 3) + (n == 0 ? 0 : n + 1); } if (linemax > 0) // line separators len += (len - 1) / linemax * newline.length; return len; } /** * Encodes all bytes from the specified byte array into a newly-allocated * byte array using the {@link Base64} encoding scheme. The returned byte * array is of the length of the resulting bytes. * * @param src * the byte array to encode * @return A newly-allocated byte array containing the resulting * encoded bytes. */ public byte[] encode(byte[] src) { int len = outLength(src.length); // dst array size byte[] dst = new byte[len]; int ret = encode0(src, 0, src.length, dst); if (ret != dst.length) return Arrays.copyOf(dst, ret); return dst; } /** * Encodes all bytes from the specified byte array using the * {@link Base64} encoding scheme, writing the resulting bytes to the * given output byte array, starting at offset 0. * * <p> It is the responsibility of the invoker of this method to make * sure the output byte array {@code dst} has enough space for encoding * all bytes from the input byte array. No bytes will be written to the * output byte array if the output byte array is not big enough. * * @param src * the byte array to encode * @param dst * the output byte array * @return The number of bytes written to the output byte array * * @throws IllegalArgumentException if {@code dst} does not have enough * space for encoding all input bytes. */ public int encode(byte[] src, byte[] dst) { int len = outLength(src.length); // dst array size if (dst.length < len) throw new IllegalArgumentException( "Output byte array is too small for encoding all input bytes"); return encode0(src, 0, src.length, dst); } /** * Encodes the specified byte array into a String using the {@link Base64} * encoding scheme. * * <p> In other words, an invocation of this method has exactly the same * effect as invoking * {@code new String(encode(src), StandardCharsets.ISO_8859_1)}. * * @param src * the byte array to encode * @return A String containing the resulting Base64 encoded characters */ @SuppressWarnings("deprecation") public String encodeToString(byte[] src) { byte[] encoded = encode(src); return new String(encoded, 0, 0, encoded.length); } /** * Returns an encoder instance that encodes equivalently to this one, * but without adding any padding character at the end of the encoded * byte data. * * <p> The encoding scheme of this encoder instance is unaffected by * this invocation. The returned encoder instance should be used for * non-padding encoding operation. * * @return an equivalent encoder that encodes without adding any * padding character at the end */ public Encoder withoutPadding() { if (!doPadding) return this; return new Encoder(isURL, newline, linemax, false); } private int encode0(byte[] src, int off, int end, byte[] dst) { char[] base64 = isURL ? toBase64URL : toBase64; int sp = off; int slen = (end - off) / 3 * 3; int sl = off + slen; if (linemax > 0 && slen > linemax / 4 * 3) slen = linemax / 4 * 3; int dp = 0; while (sp < sl) { int sl0 = Math.min(sp + slen, sl); for (int sp0 = sp, dp0 = dp ; sp0 < sl0; ) { int bits = (src[sp0++] & 0xff) << 16 | (src[sp0++] & 0xff) << 8 | (src[sp0++] & 0xff); dst[dp0++] = (byte)base64[(bits >>> 18) & 0x3f]; dst[dp0++] = (byte)base64[(bits >>> 12) & 0x3f]; dst[dp0++] = (byte)base64[(bits >>> 6) & 0x3f]; dst[dp0++] = (byte)base64[bits & 0x3f]; } int dlen = (sl0 - sp) / 3 * 4; dp += dlen; sp = sl0; if (dlen == linemax && sp < end) { for (byte b : newline){ dst[dp++] = b; } } } if (sp < end) { // 1 or 2 leftover bytes int b0 = src[sp++] & 0xff; dst[dp++] = (byte)base64[b0 >> 2]; if (sp == end) { dst[dp++] = (byte)base64[(b0 << 4) & 0x3f]; if (doPadding) { dst[dp++] = '='; dst[dp++] = '='; } } else { int b1 = src[sp++] & 0xff; dst[dp++] = (byte)base64[(b0 << 4) & 0x3f | (b1 >> 4)]; dst[dp++] = (byte)base64[(b1 << 2) & 0x3f]; if (doPadding) { dst[dp++] = '='; } } } return dp; } } /** * Returns a {@link Decoder} that decodes using the * <a href="#basic">Basic</a> type base64 encoding scheme. * * @return A Base64 decoder. */ public static Decoder getDecoder() { return Decoder.RFC4648; } /** * This class implements a decoder for decoding byte data using the * Base64 encoding scheme as specified in RFC 4648 and RFC 2045. * * <p> The Base64 padding character {@code '='} is accepted and * interpreted as the end of the encoded byte data, but is not * required. So if the final unit of the encoded byte data only has * two or three Base64 characters (without the corresponding padding * character(s) padded), they are decoded as if followed by padding * character(s). If there is a padding character present in the * final unit, the correct number of padding character(s) must be * present, otherwise {@code IllegalArgumentException} ( * {@code IOException} when reading from a Base64 stream) is thrown * during decoding. * * <p> Instances of {@link Decoder} class are safe for use by * multiple concurrent threads. * * <p> Unless otherwise noted, passing a {@code null} argument to * a method of this class will cause a * {@link NullPointerException NullPointerException} to * be thrown. * * @see Encoder * @since 1.8 */ public static class Decoder { private final boolean isURL; private final boolean isMIME; private Decoder(boolean isURL, boolean isMIME) { this.isURL = isURL; this.isMIME = isMIME; } /** * Lookup table for decoding unicode characters drawn from the * "Base64 Alphabet" (as specified in Table 1 of RFC 2045) into * their 6-bit positive integer equivalents. Characters that * are not in the Base64 alphabet but fall within the bounds of * the array are encoded to -1. * */ private static final int[] fromBase64 = new int[256]; static { Arrays.fill(fromBase64, -1); for (int i = 0; i < Encoder.toBase64.length; i++) fromBase64[Encoder.toBase64[i]] = i; fromBase64['='] = -2; } /** * Lookup table for decoding "URL and Filename safe Base64 Alphabet" * as specified in Table2 of the RFC 4648. */ private static final int[] fromBase64URL = new int[256]; static { Arrays.fill(fromBase64URL, -1); for (int i = 0; i < Encoder.toBase64URL.length; i++) fromBase64URL[Encoder.toBase64URL[i]] = i; fromBase64URL['='] = -2; } static final Decoder RFC4648 = new Decoder(false, false); static final Decoder RFC4648_URLSAFE = new Decoder(true, false); static final Decoder RFC2045 = new Decoder(false, true); /** * Decodes all bytes from the input byte array using the {@link Base64} * encoding scheme, writing the results into a newly-allocated output * byte array. The returned byte array is of the length of the resulting * bytes. * * @param src * the byte array to decode * * @return A newly-allocated byte array containing the decoded bytes. * * @throws IllegalArgumentException * if {@code src} is not in valid Base64 scheme */ public byte[] decode(byte[] src) { byte[] dst = new byte[outLength(src, 0, src.length)]; int ret = decode0(src, 0, src.length, dst); if (ret != dst.length) { dst = Arrays.copyOf(dst, ret); } return dst; } public byte[] decode(String src) { return decode(src.getBytes(Charset.forName("ISO-8859-1"))); } /** * Decodes all bytes from the input byte array using the {@link Base64} * encoding scheme, writing the results into the given output byte array, * starting at offset 0. * * <p> It is the responsibility of the invoker of this method to make * sure the output byte array {@code dst} has enough space for decoding * all bytes from the input byte array. No bytes will be be written to * the output byte array if the output byte array is not big enough. * * <p> If the input byte array is not in valid Base64 encoding scheme * then some bytes may have been written to the output byte array before * IllegalargumentException is thrown. * * @param src * the byte array to decode * @param dst * the output byte array * * @return The number of bytes written to the output byte array * * @throws IllegalArgumentException * if {@code src} is not in valid Base64 scheme, or {@code dst} * does not have enough space for decoding all input bytes. */ public int decode(byte[] src, byte[] dst) { int len = outLength(src, 0, src.length); if (dst.length < len) throw new IllegalArgumentException( "Output byte array is too small for decoding all input bytes"); return decode0(src, 0, src.length, dst); } /** * Decodes all bytes from the input byte buffer using the {@link Base64} * encoding scheme, writing the results into a newly-allocated ByteBuffer. * * <p> Upon return, the source buffer's position will be updated to * its limit; its limit will not have been changed. The returned * output buffer's position will be zero and its limit will be the * number of resulting decoded bytes * * <p> {@code IllegalArgumentException} is thrown if the input buffer * is not in valid Base64 encoding scheme. The position of the input * buffer will not be advanced in this case. * * @param buffer * the ByteBuffer to decode * * @return A newly-allocated byte buffer containing the decoded bytes * * @throws IllegalArgumentException * if {@code src} is not in valid Base64 scheme. */ public ByteBuffer decode(ByteBuffer buffer) { int pos0 = buffer.position(); try { byte[] src; int sp, sl; if (buffer.hasArray()) { src = buffer.array(); sp = buffer.arrayOffset() + buffer.position(); sl = buffer.arrayOffset() + buffer.limit(); buffer.position(buffer.limit()); } else { src = new byte[buffer.remaining()]; buffer.get(src); sp = 0; sl = src.length; } byte[] dst = new byte[outLength(src, sp, sl)]; return ByteBuffer.wrap(dst, 0, decode0(src, sp, sl, dst)); } catch (IllegalArgumentException iae) { buffer.position(pos0); throw iae; } } private int outLength(byte[] src, int sp, int sl) { int[] base64 = isURL ? fromBase64URL : fromBase64; int paddings = 0; int len = sl - sp; if (len == 0) return 0; if (len < 2) { if (isMIME && base64[0] == -1) return 0; throw new IllegalArgumentException( "Input byte[] should at least have 2 bytes for base64 bytes"); } if (isMIME) { // scan all bytes to fill out all non-alphabet. a performance // trade-off of pre-scan or Arrays.copyOf int n = 0; while (sp < sl) { int b = src[sp++] & 0xff; if (b == '=') { len -= (sl - sp + 1); break; } if ((b = base64[b]) == -1) n++; } len -= n; } else { if (src[sl - 1] == '=') { paddings++; if (src[sl - 2] == '=') paddings++; } } if (paddings == 0 && (len & 0x3) != 0) paddings = 4 - (len & 0x3); return 3 * ((len + 3) / 4) - paddings; } private int decode0(byte[] src, int sp, int sl, byte[] dst) { int[] base64 = isURL ? fromBase64URL : fromBase64; int dp = 0; int bits = 0; int shiftto = 18; // pos of first byte of 4-byte atom while (sp < sl) { int b = src[sp++] & 0xff; if ((b = base64[b]) < 0) { if (b == -2) { // padding byte '=' // = shiftto==18 unnecessary padding // x= shiftto==12 a dangling single x // x to be handled together with non-padding case // xx= shiftto==6&&sp==sl missing last = // xx=y shiftto==6 last is not = if (shiftto == 6 && (sp == sl || src[sp++] != '=') || shiftto == 18) { throw new IllegalArgumentException( "Input byte array has wrong 4-byte ending unit"); } break; } if (isMIME) // skip if for rfc2045 continue; else throw new IllegalArgumentException( "Illegal base64 character " + Integer.toString(src[sp - 1], 16)); } bits |= (b << shiftto); shiftto -= 6; if (shiftto < 0) { dst[dp++] = (byte)(bits >> 16); dst[dp++] = (byte)(bits >> 8); dst[dp++] = (byte)(bits); shiftto = 18; bits = 0; } } // reached end of byte array or hit padding '=' characters. if (shiftto == 6) { dst[dp++] = (byte)(bits >> 16); } else if (shiftto == 0) { dst[dp++] = (byte)(bits >> 16); dst[dp++] = (byte)(bits >> 8); } else if (shiftto == 12) { // dangling single "x", incorrectly encoded. throw new IllegalArgumentException( "Last unit does not have enough valid bits"); } // anything left is invalid, if is not MIME. // if MIME, ignore all non-base64 character while (sp < sl) { if (isMIME && base64[src[sp++]] < 0) continue; throw new IllegalArgumentException( "Input byte array has incorrect ending byte at " + sp); } return dp; } } } ard-work/src/main/java/com/ruoyi/device/dhsdk/common/BorderEx.java
对比新文件 @@ -0,0 +1,16 @@ package com.ruoyi.device.dhsdk.common; import javax.swing.*; import javax.swing.border.Border; /* * 边框设置 */ public class BorderEx { public static void set(JComponent object, String title, int width) { Border innerBorder = BorderFactory.createTitledBorder(title); Border outerBorder = BorderFactory.createEmptyBorder(width, width, width, width); object.setBorder(BorderFactory.createCompoundBorder(outerBorder, innerBorder)); } } ard-work/src/main/java/com/ruoyi/device/dhsdk/common/CaseMenu.java
对比新文件 @@ -0,0 +1,93 @@ package com.ruoyi.device.dhsdk.common; import java.lang.reflect.Method; import java.util.NoSuchElementException; import java.util.Scanner; import java.util.Vector; public class CaseMenu { public static class Item { private Object object; private String itemName; private String methodName; public Item(Object object, String itemName, String methodName) { super(); this.object = object; this.itemName = itemName; this.methodName = methodName; } public Object getObject() { return object; } public String getItemName() { return itemName; } public String getMethodName() { return methodName; } } private Vector<Item> items; public CaseMenu() { super(); items = new Vector<Item>(); } public void addItem(Item item) { items.add(item); } private void showItem() { final String format = "%2d\t%-20s\n"; int index = 0; System.out.printf(format, index++, "exit App"); for (Item item : items) { System.out.printf(format, index++, item.getItemName()); } System.out.println("Please input a item index to invoke the method:"); } public void run() { Scanner scanner = new Scanner(System.in); while(true) { showItem(); try { int input = Integer.parseInt(scanner.nextLine()); if (input <= 0 ) { System.err.println("input <= 0 || scanner.nextLine() == null"); // scanner.close(); // System.exit(0); break; } if (input < 0 || input > items.size()) { System.err.println("Input Error Item Index."); continue; } Item item = items.get(input - 1); Class<?> itemClass = item.getObject().getClass(); Method method = itemClass.getMethod(item.getMethodName()); method.invoke(item.getObject()); } catch (NoSuchElementException e) { // scanner.close(); // System.exit(0); break; } catch (NumberFormatException e) { System.err.println("Input Error NumberFormat."); continue; } catch (Exception e) { e.printStackTrace(); } } scanner.close(); } } ard-work/src/main/java/com/ruoyi/device/dhsdk/common/DateChooserJButton.java
对比新文件 @@ -0,0 +1,606 @@ package com.ruoyi.device.dhsdk.common; import javax.swing.*; import javax.swing.border.LineBorder; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.*; import java.awt.event.*; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 时间选择器, 年月日-时分秒 */ public class DateChooserJButton extends JButton { private static final long serialVersionUID = 1L; int startYear = 1980; // 默认【最小】显示年份 int lastYear = 2050; // 默认【最大】显示年份 private DateChooser dateChooser = null; private String preLabel = ""; private String originalText = null; private SimpleDateFormat sdf = null; private JSpinner yearSpin; private JSpinner monthSpin; private JSpinner daySpin; private JSpinner hourSpin; private JSpinner minuteSpin; private JSpinner secondSpin; public DateChooserJButton() { this(getNowDate()); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } } public DateChooserJButton(String dateString) { this(); setText(getDefaultDateFormat(), dateString); //保存原始是日期时间 initOriginalText(dateString); } public DateChooserJButton(SimpleDateFormat df, String dateString) { this(); setText(df, dateString); //记忆当前的日期格式化器 this.sdf = df; //记忆原始日期时间 Date originalDate = null; try { originalDate = df.parse(dateString); } catch (ParseException ex) { originalDate = getNowDate(); } initOriginalText(originalDate); } public DateChooserJButton(Date date) { this("", date); //记忆原始日期时间 initOriginalText(date); } public DateChooserJButton(String preLabel, Date date) { if (preLabel != null) { this.preLabel = preLabel; } setDate(date); //记忆原始是日期时间 initOriginalText(date); setBorder(null); setCursor(new Cursor(Cursor.HAND_CURSOR)); super.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (dateChooser == null) { dateChooser = new DateChooser(); } dateChooser.showDateChooser(); } }); } public DateChooserJButton(int startYear, int lastYear) { this(); this.startYear = startYear; this.lastYear = lastYear; } private static Date getNowDate() { return Calendar.getInstance().getTime(); } private static SimpleDateFormat getDefaultDateFormat() { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); } /** * 得到当前使用的日期格式化器 * @return 日期格式化器 */ public SimpleDateFormat getCurrentSimpleDateFormat(){ if(this.sdf != null){ return sdf; }else{ return getDefaultDateFormat(); } } //保存原始是日期时间 private void initOriginalText(String dateString) { this.originalText = dateString; } //保存原始是日期时间 private void initOriginalText(Date date) { this.originalText = preLabel + getDefaultDateFormat().format(date); } /** * 得到当前记忆的原始日期时间 * @return 当前记忆的原始日期时间(未修改前的日期时间) */ public String getOriginalText() { return originalText; } // 覆盖父类的方法 @Override public void setText(String s) { Date date; try { date = getDefaultDateFormat().parse(s); } catch (ParseException e) { date = getNowDate(); } setDate(date); initOriginalText(date); } public void setText(SimpleDateFormat df, String s) { Date date; try { date = df.parse(s); } catch (ParseException e) { date = getNowDate(); } setDate(date); initOriginalText(date); } public void setDate(Date date) { super.setText(preLabel + getDefaultDateFormat().format(date)); } public Date getDate() { String dateString = getText().substring(preLabel.length()); try { SimpleDateFormat currentSdf = getCurrentSimpleDateFormat(); return currentSdf.parse(dateString); } catch (ParseException e) { return getNowDate(); } } /** * 覆盖父类的方法使之无效 * @param listener 响应监听器 */ @Override public void addActionListener(ActionListener listener) { } /** * 内部类,主要是定义一个JPanel,然后把日历相关的所有内容填入本JPanel, * 然后再创建一个JDialog,把本内部类定义的JPanel放入JDialog的内容区 */ private class DateChooser extends JPanel implements MouseListener, ChangeListener { private static final long serialVersionUID = 1L; JLabel yearLabel; JLabel monthLabel; JLabel dayLabel; JLabel hourLabel; JLabel minuteLabel; JLabel secondLabel; int width = 485; // 界面宽度 int height = 230; // 界面高度 Color backGroundColor = Color.gray; // 底色 // 月历表格配色----------------// Color palletTableColor = Color.white; // 日历表底色 Color todayBackColor = Color.orange; // 今天背景色 Color weekFontColor = Color.blue; // 星期文字色 Color dateFontColor = Color.black; // 日期文字色 Color weekendFontColor = Color.red; // 周末文字色 // 控制条配色------------------// Color controlLineColor = Color.pink; // 控制条底色 Color controlTextColor = Color.white; // 控制条标签文字色 /** 点击DateChooserButton时弹出的对话框,日历内容在这个对话框内 */ JDialog dialog; JLabel[][] daysLabels = new JLabel[6][7]; DateChooser() { setLayout(new BorderLayout()); setBorder(new LineBorder(backGroundColor, 2)); setBackground(backGroundColor); JPanel topYearAndMonth = createYearAndMonthPanal(); add(topYearAndMonth, BorderLayout.NORTH); JPanel centerWeekAndDay = createWeekAndDayPanal(); add(centerWeekAndDay, BorderLayout.CENTER); JPanel buttonBarPanel = createButtonBarPanel(); this.add(buttonBarPanel, BorderLayout.SOUTH); } private JPanel createYearAndMonthPanal() { Calendar c = getCalendar(); int currentYear = c.get(Calendar.YEAR); int currentMonth = c.get(Calendar.MONTH) + 1; int currentDay = c.get(Calendar.DAY_OF_MONTH); int currentHour = c.get(Calendar.HOUR_OF_DAY); int currentMinute = c.get(Calendar.MINUTE); int currentSecond = c.get(Calendar.SECOND); JPanel result = new JPanel(); result.setLayout(new FlowLayout()); result.setBackground(controlLineColor); yearSpin = new JSpinner(new SpinnerNumberModel(currentYear, startYear, lastYear, 1)); yearSpin.setPreferredSize(new Dimension(48, 20)); yearSpin.setName("Year"); yearSpin.setEditor(new JSpinner.NumberEditor(yearSpin, "####")); yearSpin.addChangeListener(this); result.add(yearSpin); yearLabel = new JLabel(Res.string().getYear()); yearLabel.setForeground(controlTextColor); result.add(yearLabel); monthSpin = new JSpinner(new SpinnerNumberModel(currentMonth, 1, 12, 1)); monthSpin.setPreferredSize(new Dimension(35, 20)); monthSpin.setName("Month"); monthSpin.addChangeListener(this); result.add(monthSpin); monthLabel = new JLabel(Res.string().getMonth()); monthLabel.setForeground(controlTextColor); result.add(monthLabel); //如果这里要能够选择,会要判断很多东西,比如每个月分别由多少日,以及闰年问题.所以,就干脆把Enable设为false daySpin = new JSpinner(new SpinnerNumberModel(currentDay, 1, 31, 1)); daySpin.setPreferredSize(new Dimension(35, 20)); daySpin.setName("Day"); daySpin.addChangeListener(this); daySpin.setEnabled(false); result.add(daySpin); dayLabel = new JLabel(Res.string().getDay()); dayLabel.setForeground(controlTextColor); result.add(dayLabel); hourSpin = new JSpinner(new SpinnerNumberModel(currentHour, 0, 23, 1)); hourSpin.setPreferredSize(new Dimension(35, 20)); hourSpin.setName("Hour"); hourSpin.addChangeListener(this); result.add(hourSpin); hourLabel = new JLabel(Res.string().getHour()); hourLabel.setForeground(controlTextColor); result.add(hourLabel); minuteSpin = new JSpinner(new SpinnerNumberModel(currentMinute, 0, 59, 1)); minuteSpin.setPreferredSize(new Dimension(35, 20)); minuteSpin.setName("Minute"); minuteSpin.addChangeListener(this); result.add(minuteSpin); minuteLabel = new JLabel(Res.string().getMinute()); minuteLabel.setForeground(controlTextColor); result.add(minuteLabel); secondSpin = new JSpinner(new SpinnerNumberModel(currentSecond, 0, 59, 1)); secondSpin.setPreferredSize(new Dimension(35, 20)); secondSpin.setName("Second"); secondSpin.addChangeListener(this); result.add(secondSpin); secondLabel = new JLabel(Res.string().getSecond()); secondLabel.setForeground(controlTextColor); result.add(secondLabel); return result; } private JPanel createWeekAndDayPanal() { Res.string().getWeek(); JPanel result = new JPanel(); // 设置固定字体,以免调用环境改变影响界面美观 result.setFont(new Font("宋体", Font.PLAIN, 12)); result.setLayout(new GridLayout(7, 7)); result.setBackground(Color.white); JLabel cell; for (int i = 0; i < 7; i++) { cell = new JLabel(Res.string().getWeek()[i]); cell.setHorizontalAlignment(JLabel.RIGHT); if (i == 0 || i == 6) { cell.setForeground(weekendFontColor); } else { cell.setForeground(weekFontColor); } result.add(cell); } // int actionCommandId = 0; for (int i = 0; i < 6; i++) { for (int j = 0; j < 7; j++) { JLabel numberLabel = new JLabel(); numberLabel.setBorder(null); numberLabel.setHorizontalAlignment(SwingConstants.RIGHT); // numberLabel.setActionCommand(String.valueOf(actionCommandId)); numberLabel.addMouseListener(this); numberLabel.setBackground(palletTableColor); numberLabel.setForeground(dateFontColor); if (j == 0 || j == 6) { numberLabel.setForeground(weekendFontColor); } else { numberLabel.setForeground(dateFontColor); } daysLabels[i][j] = numberLabel; result.add(numberLabel); // actionCommandId++; } } return result; } /** 得到DateChooserButton的当前text,本方法是为按钮事件匿名类准备的。 */ public String getTextOfDateChooserButton() { return getText(); } /** 恢复DateChooserButton的原始日期时间text,本方法是为按钮事件匿名类准备的。 */ public void restoreTheOriginalDate() { String originalText = getOriginalText(); setText(originalText); } private JPanel createButtonBarPanel() { JPanel panel = new JPanel(); panel.setLayout(new GridLayout(1, 2)); JButton ok = new JButton(Res.string().getConfirm()); ok.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //记忆原始日期时间 initOriginalText(getTextOfDateChooserButton()); //隐藏日历对话框 dialog.setVisible(false); } }); panel.add(ok); JButton cancel = new JButton(Res.string().getCancel()); cancel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //恢复原始的日期时间 restoreTheOriginalDate(); //隐藏日历对话框 dialog.setVisible(false); } }); panel.add(cancel); return panel; } private JDialog createDialog() { JDialog result = new JDialog(); result.setTitle(Res.string().getDateChooser()); result.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); result.getContentPane().add(this, BorderLayout.CENTER); result.pack(); result.setSize(width, height); result.setModal(true); result.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { //恢复原始的日期时间 restoreTheOriginalDate(); //隐藏日历对话框 dialog.setVisible(false); } }); return result; } void showDateChooser() { if (dialog == null) { dialog = createDialog(); } dialog.setLocationRelativeTo(null); flushWeekAndDay(); dialog.setVisible(true); } private Calendar getCalendar() { Calendar result = Calendar.getInstance(); result.setTime(getDate()); return result; } private int getSelectedYear() { return ((Integer) yearSpin.getValue()).intValue(); } private int getSelectedMonth() { return ((Integer) monthSpin.getValue()).intValue(); } private int getSelectedHour() { return ((Integer) hourSpin.getValue()).intValue(); } private int getSelectedMinite() { return ((Integer) minuteSpin.getValue()).intValue(); } private int getSelectedSecond() { return ((Integer) secondSpin.getValue()).intValue(); } private void dayColorUpdate(boolean isOldDay) { Calendar c = getCalendar(); int day = c.get(Calendar.DAY_OF_MONTH); c.set(Calendar.DAY_OF_MONTH, 1); int actionCommandId = day - 2 + c.get(Calendar.DAY_OF_WEEK); int i = actionCommandId / 7; int j = actionCommandId % 7; if (isOldDay) { daysLabels[i][j].setForeground(dateFontColor); } else { daysLabels[i][j].setForeground(todayBackColor); } } private void flushWeekAndDay() { Calendar c = getCalendar(); c.set(Calendar.DAY_OF_MONTH, 1); int maxDayNo = c.getActualMaximum(Calendar.DAY_OF_MONTH); int dayNo = 2 - c.get(Calendar.DAY_OF_WEEK); for (int i = 0; i < 6; i++) { for (int j = 0; j < 7; j++) { String s = ""; if (dayNo >= 1 && dayNo <= maxDayNo) { s = String.valueOf(dayNo); } daysLabels[i][j].setText(s); dayNo++; } } // 打开日历时,根据按钮的时间,设置日历的时间 String[] date1 = getText().split(" ")[0].split("-"); String[] date2 = getText().split(" ")[1].split(":"); yearSpin.setValue(new Integer(date1[0])); monthSpin.setValue(new Integer(date1[1])); daySpin.setValue(new Integer(date1[2])); hourSpin.setValue(new Integer(date2[0])); minuteSpin.setValue(new Integer(date2[1])); secondSpin.setValue(new Integer(date2[2])); // 重置日历天的数字颜色 for(int i = 0; i < 6; i++) { for(int j = 0; j < 7; j++) { if(!daysLabels[i][j].getText().equals("")) { daysLabels[i][j].setForeground(Color.BLACK); } } } // 重置日历星期六、星期日的数字颜色 for(int i = 0; i < 6; i++) { if(!daysLabels[i][0].getText().equals("")) { daysLabels[i][0].setForeground(weekendFontColor); } if(!daysLabels[i][6].getText().equals("")) { daysLabels[i][6].setForeground(weekendFontColor); } } // 设置当天的数字颜色 for(int i = 0; i < 6; i++) { for(int j = 0; j < 7; j++) { if(daysLabels[i][j].getText().equals(date1[2])) { daysLabels[i][j].setForeground(todayBackColor); } } } dayColorUpdate(false); } /** * 选择日期时的响应事件 */ @Override public void stateChanged(ChangeEvent e) { JSpinner source = (JSpinner) e.getSource(); Calendar c = getCalendar(); if (source.getName().equals("Hour")) { c.set(Calendar.HOUR_OF_DAY, getSelectedHour()); setDate(c.getTime()); return; } if (source.getName().equals("Minute")) { c.set(Calendar.MINUTE, getSelectedMinite()); setDate(c.getTime()); return; } if (source.getName().equals("Second")) { c.set(Calendar.SECOND, getSelectedSecond()); setDate(c.getTime()); return; } dayColorUpdate(true); if (source.getName().equals("Year")) { c.set(Calendar.YEAR, getSelectedYear()); } else if (source.getName().equals("Month")) { c.set(Calendar.MONTH, getSelectedMonth() - 1); } setDate(c.getTime()); flushWeekAndDay(); } /** * 选择日期时的响应事件 */ @Override public void mouseClicked(MouseEvent e) { JLabel source = (JLabel) e.getSource(); if (source.getText().length() == 0) { return; } dayColorUpdate(true); source.setForeground(todayBackColor); int newDay = Integer.parseInt(source.getText()); Calendar c = getCalendar(); c.set(Calendar.DAY_OF_MONTH, newDay); setDate(c.getTime()); //把daySpin中的值也变了 daySpin.setValue(Integer.valueOf(newDay)); } @Override public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub } } } ard-work/src/main/java/com/ruoyi/device/dhsdk/common/DateChooserJButtonEx.java
对比新文件 @@ -0,0 +1,568 @@ package com.ruoyi.device.dhsdk.common; import javax.swing.*; import javax.swing.border.LineBorder; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.*; import java.awt.event.*; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 时间选择器, 年月日 */ public class DateChooserJButtonEx extends JButton { private static final long serialVersionUID = 1L; int startYear = 1980; // 默认【最小】显示年份 int lastYear = 2050; // 默认【最大】显示年份 private DateChooser dateChooser = null; private String preLabel = ""; private String originalText = null; private SimpleDateFormat sdf = null; private JSpinner yearSpin; private JSpinner monthSpin; private JSpinner daySpin; private JSpinner hourSpin; private JSpinner minuteSpin; private JSpinner secondSpin; public DateChooserJButtonEx() { this(getNowDate()); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } } public DateChooserJButtonEx(String dateString) { this(); setText(getDefaultDateFormat(), dateString); //保存原始是日期时间 initOriginalText(dateString); } public DateChooserJButtonEx(SimpleDateFormat df, String dateString) { this(); setText(df, dateString); //记忆当前的日期格式化器 this.sdf = df; //记忆原始日期时间 Date originalDate = null; try { originalDate = df.parse(dateString); } catch (ParseException ex) { originalDate = getNowDate(); } initOriginalText(originalDate); } public DateChooserJButtonEx(Date date) { this("", date); //记忆原始日期时间 initOriginalText(date); } public DateChooserJButtonEx(String preLabel, Date date) { if (preLabel != null) { this.preLabel = preLabel; } setDate(date); //记忆原始是日期时间 initOriginalText(date); setBorder(null); setCursor(new Cursor(Cursor.HAND_CURSOR)); super.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (dateChooser == null) { dateChooser = new DateChooser(); } dateChooser.showDateChooser(); } }); } public void setStartYear(int startYear) { this.startYear = startYear; } public void setLastYear(int lastYear) { this.lastYear = lastYear; } private static Date getNowDate() { return Calendar.getInstance().getTime(); } private static SimpleDateFormat getDefaultDateFormat() { return new SimpleDateFormat("yyyy-MM-dd"); } /** * 得到当前使用的日期格式化器 * @return 日期格式化器 */ public SimpleDateFormat getCurrentSimpleDateFormat(){ if(this.sdf != null){ return sdf; }else{ return getDefaultDateFormat(); } } //保存原始是日期时间 private void initOriginalText(String dateString) { this.originalText = dateString; } //保存原始是日期时间 private void initOriginalText(Date date) { this.originalText = preLabel + getDefaultDateFormat().format(date); } /** * 得到当前记忆的原始日期时间 * @return 当前记忆的原始日期时间(未修改前的日期时间) */ public String getOriginalText() { return originalText; } // 覆盖父类的方法 @Override public void setText(String s) { Date date; try { date = getDefaultDateFormat().parse(s); } catch (ParseException e) { date = getNowDate(); } setDate(date); initOriginalText(date); } public void setText(SimpleDateFormat df, String s) { Date date; try { date = df.parse(s); } catch (ParseException e) { date = getNowDate(); } setDate(date); initOriginalText(date); } public void setDate(Date date) { super.setText(preLabel + getDefaultDateFormat().format(date)); } public Date getDate() { String dateString = getText().substring(preLabel.length()); try { SimpleDateFormat currentSdf = getCurrentSimpleDateFormat(); return currentSdf.parse(dateString); } catch (ParseException e) { return getNowDate(); } } /** * 覆盖父类的方法使之无效 * @param listener 响应监听器 */ @Override public void addActionListener(ActionListener listener) { } /** * 内部类,主要是定义一个JPanel,然后把日历相关的所有内容填入本JPanel, * 然后再创建一个JDialog,把本内部类定义的JPanel放入JDialog的内容区 */ private class DateChooser extends JPanel implements MouseListener, ChangeListener { private static final long serialVersionUID = 1L; JLabel yearLabel; JLabel monthLabel; JLabel dayLabel; int width = 485; // 界面宽度 int height = 230; // 界面高度 Color backGroundColor = Color.gray; // 底色 // 月历表格配色----------------// Color palletTableColor = Color.white; // 日历表底色 Color todayBackColor = Color.orange; // 今天背景色 Color weekFontColor = Color.blue; // 星期文字色 Color dateFontColor = Color.black; // 日期文字色 Color weekendFontColor = Color.red; // 周末文字色 // 控制条配色------------------// Color controlLineColor = Color.pink; // 控制条底色 Color controlTextColor = Color.white; // 控制条标签文字色 /** 点击DateChooserButton时弹出的对话框,日历内容在这个对话框内 */ JDialog dialog; JLabel[][] daysLabels = new JLabel[6][7]; DateChooser() { setLayout(new BorderLayout()); setBorder(new LineBorder(backGroundColor, 2)); setBackground(backGroundColor); JPanel topYearAndMonth = createYearAndMonthPanal(); add(topYearAndMonth, BorderLayout.NORTH); JPanel centerWeekAndDay = createWeekAndDayPanal(); add(centerWeekAndDay, BorderLayout.CENTER); JPanel buttonBarPanel = createButtonBarPanel(); this.add(buttonBarPanel, BorderLayout.SOUTH); } private JPanel createYearAndMonthPanal() { Calendar c = getCalendar(); int currentYear = c.get(Calendar.YEAR); int currentMonth = c.get(Calendar.MONTH) + 1; int currentDay = c.get(Calendar.DAY_OF_MONTH); JPanel result = new JPanel(); result.setLayout(new FlowLayout()); result.setBackground(controlLineColor); yearSpin = new JSpinner(new SpinnerNumberModel(currentYear, startYear, lastYear, 1)); yearSpin.setPreferredSize(new Dimension(48, 20)); yearSpin.setName("Year"); yearSpin.setEditor(new JSpinner.NumberEditor(yearSpin, "####")); yearSpin.addChangeListener(this); result.add(yearSpin); yearLabel = new JLabel(Res.string().getYear()); yearLabel.setForeground(controlTextColor); result.add(yearLabel); monthSpin = new JSpinner(new SpinnerNumberModel(currentMonth, 1, 12, 1)); monthSpin.setPreferredSize(new Dimension(35, 20)); monthSpin.setName("Month"); monthSpin.addChangeListener(this); result.add(monthSpin); monthLabel = new JLabel(Res.string().getMonth()); monthLabel.setForeground(controlTextColor); result.add(monthLabel); //如果这里要能够选择,会要判断很多东西,比如每个月分别由多少日,以及闰年问题.所以,就干脆把Enable设为false daySpin = new JSpinner(new SpinnerNumberModel(currentDay, 1, 31, 1)); daySpin.setPreferredSize(new Dimension(35, 20)); daySpin.setName("Day"); daySpin.addChangeListener(this); daySpin.setEnabled(false); result.add(daySpin); dayLabel = new JLabel(Res.string().getDay()); dayLabel.setForeground(controlTextColor); result.add(dayLabel); return result; } private JPanel createWeekAndDayPanal() { Res.string().getWeek(); JPanel result = new JPanel(); // 设置固定字体,以免调用环境改变影响界面美观 result.setFont(new Font("宋体", Font.PLAIN, 12)); result.setLayout(new GridLayout(7, 7)); result.setBackground(Color.white); JLabel cell; for (int i = 0; i < 7; i++) { cell = new JLabel(Res.string().getWeek()[i]); cell.setHorizontalAlignment(JLabel.RIGHT); if (i == 0 || i == 6) { cell.setForeground(weekendFontColor); } else { cell.setForeground(weekFontColor); } result.add(cell); } // int actionCommandId = 0; for (int i = 0; i < 6; i++) { for (int j = 0; j < 7; j++) { JLabel numberLabel = new JLabel(); numberLabel.setBorder(null); numberLabel.setHorizontalAlignment(SwingConstants.RIGHT); // numberLabel.setActionCommand(String.valueOf(actionCommandId)); numberLabel.addMouseListener(this); numberLabel.setBackground(palletTableColor); numberLabel.setForeground(dateFontColor); if (j == 0 || j == 6) { numberLabel.setForeground(weekendFontColor); } else { numberLabel.setForeground(dateFontColor); } daysLabels[i][j] = numberLabel; result.add(numberLabel); // actionCommandId++; } } return result; } /** 得到DateChooserButton的当前text,本方法是为按钮事件匿名类准备的。 */ public String getTextOfDateChooserButton() { return getText(); } /** 恢复DateChooserButton的原始日期时间text,本方法是为按钮事件匿名类准备的。 */ public void restoreTheOriginalDate() { String originalText = getOriginalText(); setText(originalText); } private JPanel createButtonBarPanel() { JPanel panel = new JPanel(); panel.setLayout(new GridLayout(1, 2)); JButton ok = new JButton(Res.string().getConfirm()); ok.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //记忆原始日期时间 initOriginalText(getTextOfDateChooserButton()); //隐藏日历对话框 dialog.setVisible(false); } }); panel.add(ok); JButton cancel = new JButton(Res.string().getCancel()); cancel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //恢复原始的日期时间 restoreTheOriginalDate(); //隐藏日历对话框 dialog.setVisible(false); } }); panel.add(cancel); return panel; } private JDialog createDialog() { JDialog result = new JDialog(); result.setTitle(Res.string().getDateChooser()); result.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); result.getContentPane().add(this, BorderLayout.CENTER); result.pack(); result.setSize(width, height); result.setModal(true); result.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { //恢复原始的日期时间 restoreTheOriginalDate(); //隐藏日历对话框 dialog.setVisible(false); } }); return result; } void showDateChooser() { if (dialog == null) { dialog = createDialog(); } dialog.setLocationRelativeTo(null); flushWeekAndDay(); dialog.setVisible(true); } private Calendar getCalendar() { Calendar result = Calendar.getInstance(); result.setTime(getDate()); return result; } private int getSelectedYear() { return ((Integer) yearSpin.getValue()).intValue(); } private int getSelectedMonth() { return ((Integer) monthSpin.getValue()).intValue(); } private int getSelectedHour() { return ((Integer) hourSpin.getValue()).intValue(); } private int getSelectedMinite() { return ((Integer) minuteSpin.getValue()).intValue(); } private int getSelectedSecond() { return ((Integer) secondSpin.getValue()).intValue(); } private void dayColorUpdate(boolean isOldDay) { Calendar c = getCalendar(); int day = c.get(Calendar.DAY_OF_MONTH); c.set(Calendar.DAY_OF_MONTH, 1); int actionCommandId = day - 2 + c.get(Calendar.DAY_OF_WEEK); int i = actionCommandId / 7; int j = actionCommandId % 7; if (isOldDay) { daysLabels[i][j].setForeground(dateFontColor); } else { daysLabels[i][j].setForeground(todayBackColor); } } private void flushWeekAndDay() { Calendar c = getCalendar(); c.set(Calendar.DAY_OF_MONTH, 1); int maxDayNo = c.getActualMaximum(Calendar.DAY_OF_MONTH); int dayNo = 2 - c.get(Calendar.DAY_OF_WEEK); for (int i = 0; i < 6; i++) { for (int j = 0; j < 7; j++) { String s = ""; if (dayNo >= 1 && dayNo <= maxDayNo) { s = String.valueOf(dayNo); } daysLabels[i][j].setText(s); dayNo++; } } // 打开日历时,根据按钮的时间,设置日历的时间 String[] date1 = getText().split(" ")[0].split("-"); yearSpin.setValue(new Integer(date1[0])); monthSpin.setValue(new Integer(date1[1])); daySpin.setValue(new Integer(date1[2])); // 重置日历天的数字颜色 for(int i = 0; i < 6; i++) { for(int j = 0; j < 7; j++) { if(!daysLabels[i][j].getText().equals("")) { daysLabels[i][j].setForeground(Color.BLACK); } } } // 重置日历星期六、星期日的数字颜色 for(int i = 0; i < 6; i++) { if(!daysLabels[i][0].getText().equals("")) { daysLabels[i][0].setForeground(weekendFontColor); } if(!daysLabels[i][6].getText().equals("")) { daysLabels[i][6].setForeground(weekendFontColor); } } // 设置当天的数字颜色 for(int i = 0; i < 6; i++) { for(int j = 0; j < 7; j++) { if(daysLabels[i][j].getText().equals(date1[2])) { daysLabels[i][j].setForeground(todayBackColor); } } } dayColorUpdate(false); } /** * 选择日期时的响应事件 */ @Override public void stateChanged(ChangeEvent e) { JSpinner source = (JSpinner) e.getSource(); Calendar c = getCalendar(); if (source.getName().equals("Hour")) { c.set(Calendar.HOUR_OF_DAY, getSelectedHour()); setDate(c.getTime()); return; } if (source.getName().equals("Minute")) { c.set(Calendar.MINUTE, getSelectedMinite()); setDate(c.getTime()); return; } if (source.getName().equals("Second")) { c.set(Calendar.SECOND, getSelectedSecond()); setDate(c.getTime()); return; } dayColorUpdate(true); if (source.getName().equals("Year")) { c.set(Calendar.YEAR, getSelectedYear()); } else if (source.getName().equals("Month")) { c.set(Calendar.MONTH, getSelectedMonth() - 1); } setDate(c.getTime()); flushWeekAndDay(); } /** * 选择日期时的响应事件 */ @Override public void mouseClicked(MouseEvent e) { JLabel source = (JLabel) e.getSource(); if (source.getText().length() == 0) { return; } dayColorUpdate(true); source.setForeground(todayBackColor); int newDay = Integer.parseInt(source.getText()); Calendar c = getCalendar(); c.set(Calendar.DAY_OF_MONTH, newDay); setDate(c.getTime()); //把daySpin中的值也变了 daySpin.setValue(Integer.valueOf(newDay)); } @Override public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub } } } ard-work/src/main/java/com/ruoyi/device/dhsdk/common/DeviceManagerListener.java
对比新文件 @@ -0,0 +1,5 @@ package com.ruoyi.device.dhsdk.common; public interface DeviceManagerListener { void onDeviceManager(String deviceId, String username, String password); } ard-work/src/main/java/com/ruoyi/device/dhsdk/common/ErrorCode.java
对比新文件 @@ -0,0 +1,871 @@ package com.ruoyi.device.dhsdk.common; import com.ruoyi.device.dhsdk.lib.LastError; /** * 登录设备设备错误状态 */ public class ErrorCode { /** * 登录设备设备错误状态中英文 * @param err 接口CLIENT_GetLastError返回, error code: (0x80000000|" + (LoginModule.netsdk.CLIENT_GetLastError() & 0x7fffffff) +") * @return */ public static String getErrorCode(int err) { String msg = ""; switch(err) { case LastError.NET_NOERROR: // 0 没有错误 msg = Res.string().getBundle().getString("NET_ERROR"); break; case LastError.NET_ERROR: // -1 未知错误 msg = Res.string().getBundle().getString("NET_ERROR"); break; case LastError.NET_SYSTEM_ERROR: // (0x80000000|1) Windows系统出错 msg = Res.string().getBundle().getString("NET_SYSTEM_ERROR"); break; case LastError.NET_NETWORK_ERROR: // (0x80000000|2) 网络错误,可能是因为网络超时 msg = Res.string().getBundle().getString("NET_NETWORK_ERROR"); break; case LastError.NET_DEV_VER_NOMATCH: // (0x80000000|3) 设备协议不匹配 msg = Res.string().getBundle().getString("NET_DEV_VER_NOMATCH"); break; case LastError.NET_INVALID_HANDLE: // (0x80000000|4) 句柄无效 msg = Res.string().getBundle().getString("NET_INVALID_HANDLE"); break; case LastError.NET_OPEN_CHANNEL_ERROR: // (0x80000000|5) 打开通道失败 msg = Res.string().getBundle().getString("NET_OPEN_CHANNEL_ERROR"); break; case LastError.NET_CLOSE_CHANNEL_ERROR: // (0x80000000|6) 关闭通道失败 msg = Res.string().getBundle().getString("NET_CLOSE_CHANNEL_ERROR"); break; case LastError.NET_ILLEGAL_PARAM: // (0x80000000|7) 用户参数不合法 msg = Res.string().getBundle().getString("NET_ILLEGAL_PARAM"); break; case LastError.NET_SDK_INIT_ERROR: // (0x80000000|8) SDK初始化出错 msg = Res.string().getBundle().getString("NET_SDK_INIT_ERROR"); break; case LastError.NET_SDK_UNINIT_ERROR: // (0x80000000|9) SDK清理出错 msg = Res.string().getBundle().getString("NET_SDK_UNINIT_ERROR"); break; case LastError.NET_RENDER_OPEN_ERROR: // (0x80000000|10) 申请render资源出错 msg = Res.string().getBundle().getString("NET_RENDER_OPEN_ERROR"); break; case LastError.NET_DEC_OPEN_ERROR: // (0x80000000|11) 打开解码库出错 msg = Res.string().getBundle().getString("NET_DEC_OPEN_ERROR"); break; case LastError.NET_DEC_CLOSE_ERROR: // (0x80000000|12) 关闭解码库出错 msg = Res.string().getBundle().getString("NET_DEC_CLOSE_ERROR"); break; case LastError.NET_MULTIPLAY_NOCHANNEL: // (0x80000000|13) 多画面预览中检测到通道数为0 msg = Res.string().getBundle().getString("NET_MULTIPLAY_NOCHANNEL"); break; case LastError.NET_TALK_INIT_ERROR: // (0x80000000|14) 录音库初始化失败 msg = Res.string().getBundle().getString("NET_TALK_INIT_ERROR"); break; case LastError.NET_TALK_NOT_INIT: // (0x80000000|15) 录音库未经初始化 msg = Res.string().getBundle().getString("NET_TALK_NOT_INIT"); break; case LastError.NET_TALK_SENDDATA_ERROR: // (0x80000000|16) 发送音频数据出错 msg = Res.string().getBundle().getString("NET_TALK_SENDDATA_ERROR"); break; case LastError.NET_REAL_ALREADY_SAVING: // (0x80000000|17) 实时数据已经处于保存状态 msg = Res.string().getBundle().getString("NET_REAL_ALREADY_SAVING"); break; case LastError.NET_NOT_SAVING: // (0x80000000|18) 未保存实时数据 msg = Res.string().getBundle().getString("NET_NOT_SAVING"); break; case LastError.NET_OPEN_FILE_ERROR: // (0x80000000|19) 打开文件出错 msg = Res.string().getBundle().getString("NET_OPEN_FILE_ERROR"); break; case LastError.NET_PTZ_SET_TIMER_ERROR: // (0x80000000|20) 启动云台控制定时器失败 msg = Res.string().getBundle().getString("NET_PTZ_SET_TIMER_ERROR"); break; case LastError.NET_RETURN_DATA_ERROR: // (0x80000000|21) 对返回数据的校验出错 msg = Res.string().getBundle().getString("NET_RETURN_DATA_ERROR"); break; case LastError.NET_INSUFFICIENT_BUFFER: // (0x80000000|22) 没有足够的缓存 msg = Res.string().getBundle().getString("NET_INSUFFICIENT_BUFFER"); break; case LastError.NET_NOT_SUPPORTED: // (0x80000000|23) 当前SDK未支持该功能 msg = Res.string().getBundle().getString("NET_NOT_SUPPORTED"); break; case LastError.NET_NO_RECORD_FOUND: // (0x80000000|24) 查询不到录像 msg = Res.string().getBundle().getString("NET_NO_RECORD_FOUND"); break; case LastError.NET_NOT_AUTHORIZED: // (0x80000000|25) 无操作权限 msg = Res.string().getBundle().getString("NET_NOT_AUTHORIZED"); break; case LastError.NET_NOT_NOW: // (0x80000000|26) 暂时无法执行 msg = Res.string().getBundle().getString("NET_NOT_NOW"); break; case LastError.NET_NO_TALK_CHANNEL: // (0x80000000|27) 未发现对讲通道 msg = Res.string().getBundle().getString("NET_NO_TALK_CHANNEL"); break; case LastError.NET_NO_AUDIO: // (0x80000000|28) 未发现音频 msg = Res.string().getBundle().getString("NET_NO_AUDIO"); break; case LastError.NET_NO_INIT: // (0x80000000|29) 网络SDK未经初始化 msg = Res.string().getBundle().getString("NET_NO_INIT"); break; case LastError.NET_DOWNLOAD_END: // (0x80000000|30) 下载已结束 msg = Res.string().getBundle().getString("NET_DOWNLOAD_END"); break; case LastError.NET_EMPTY_LIST: // (0x80000000|31) 查询结果为空 msg = Res.string().getBundle().getString("NET_EMPTY_LIST"); break; case LastError.NET_ERROR_GETCFG_SYSATTR: // (0x80000000|32) 获取系统属性配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_SYSATTR"); break; case LastError.NET_ERROR_GETCFG_SERIAL: // (0x80000000|33) 获取序列号失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_SERIAL"); break; case LastError.NET_ERROR_GETCFG_GENERAL: // (0x80000000|34) 获取常规属性失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_GENERAL"); break; case LastError.NET_ERROR_GETCFG_DSPCAP: // (0x80000000|35) 获取DSP能力描述失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_DSPCAP"); break; case LastError.NET_ERROR_GETCFG_NETCFG: // (0x80000000|36) 获取网络配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_NETCFG"); break; case LastError.NET_ERROR_GETCFG_CHANNAME: // (0x80000000|37) 获取通道名称失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_CHANNAME"); break; case LastError.NET_ERROR_GETCFG_VIDEO: // (0x80000000|38) 获取视频属性失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_VIDEO"); break; case LastError.NET_ERROR_GETCFG_RECORD: // (0x80000000|39) 获取录象配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_RECORD"); break; case LastError.NET_ERROR_GETCFG_PRONAME: // (0x80000000|40) 获取解码器协议名称失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_PRONAME"); break; case LastError.NET_ERROR_GETCFG_FUNCNAME: // (0x80000000|41) 获取232串口功能名称失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_FUNCNAME"); break; case LastError.NET_ERROR_GETCFG_485DECODER: // (0x80000000|42) 获取解码器属性失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_485DECODER"); break; case LastError.NET_ERROR_GETCFG_232COM: // (0x80000000|43) 获取232串口配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_232COM"); break; case LastError.NET_ERROR_GETCFG_ALARMIN: // (0x80000000|44) 获取外部报警输入配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_ALARMIN"); break; case LastError.NET_ERROR_GETCFG_ALARMDET: // (0x80000000|45) 获取动态检测报警失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_ALARMDET"); break; case LastError.NET_ERROR_GETCFG_SYSTIME: // (0x80000000|46) 获取设备时间失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_SYSTIME"); break; case LastError.NET_ERROR_GETCFG_PREVIEW: // (0x80000000|47) 获取预览参数失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_PREVIEW"); break; case LastError.NET_ERROR_GETCFG_AUTOMT: // (0x80000000|48) 获取自动维护配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_AUTOMT"); break; case LastError.NET_ERROR_GETCFG_VIDEOMTRX: // (0x80000000|49) 获取视频矩阵配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_VIDEOMTRX"); break; case LastError.NET_ERROR_GETCFG_COVER: // (0x80000000|50) 获取区域遮挡配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_COVER"); break; case LastError.NET_ERROR_GETCFG_WATERMAKE: // (0x80000000|51) 获取图象水印配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_WATERMAKE"); break; case LastError.NET_ERROR_GETCFG_MULTICAST: // (0x80000000|52) 获取配置失败位置:组播端口按通道配置 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_MULTICAST"); break; case LastError.NET_ERROR_SETCFG_GENERAL: // (0x80000000|55) 修改常规属性失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_GENERAL"); break; case LastError.NET_ERROR_SETCFG_NETCFG: // (0x80000000|56) 改网络配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_NETCFG"); break; case LastError.NET_ERROR_SETCFG_CHANNAME: // (0x80000000|57) 修改通道名称失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_CHANNAME"); break; case LastError.NET_ERROR_SETCFG_VIDEO: // (0x80000000|58) 修改视频属性失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_VIDEO"); break; case LastError.NET_ERROR_SETCFG_RECORD: // (0x80000000|59) 修改录象配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_RECORD"); break; case LastError.NET_ERROR_SETCFG_485DECODER: // (0x80000000|60) 修改解码器属性失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_485DECODER"); break; case LastError.NET_ERROR_SETCFG_232COM: // (0x80000000|61) 修改232串口配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_232COM"); break; case LastError.NET_ERROR_SETCFG_ALARMIN: // (0x80000000|62) 修改外部输入报警配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_ALARMIN"); break; case LastError.NET_ERROR_SETCFG_ALARMDET: // (0x80000000|63) 修改动态检测报警配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_ALARMDET"); break; case LastError.NET_ERROR_SETCFG_SYSTIME: // (0x80000000|64) 修改设备时间失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_SYSTIME"); break; case LastError.NET_ERROR_SETCFG_PREVIEW: // (0x80000000|65) 修改预览参数失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_PREVIEW"); break; case LastError.NET_ERROR_SETCFG_AUTOMT: // (0x80000000|66) 修改自动维护配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_AUTOMT"); break; case LastError.NET_ERROR_SETCFG_VIDEOMTRX: // (0x80000000|67) 修改视频矩阵配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_VIDEOMTRX"); break; case LastError.NET_ERROR_SETCFG_COVER: // (0x80000000|68) 修改区域遮挡配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_COVER"); break; case LastError.NET_ERROR_SETCFG_WATERMAKE: // (0x80000000|69) 修改图象水印配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_WATERMAKE"); break; case LastError.NET_ERROR_SETCFG_WLAN: // (0x80000000|70) 修改无线网络信息失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_WLAN"); break; case LastError.NET_ERROR_SETCFG_WLANDEV: // (0x80000000|71) 选择无线网络设备失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_WLANDEV"); break; case LastError.NET_ERROR_SETCFG_REGISTER: // (0x80000000|72) 修改主动注册参数配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_REGISTER"); break; case LastError.NET_ERROR_SETCFG_CAMERA: // (0x80000000|73) 修改摄像头属性配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_CAMERA"); break; case LastError.NET_ERROR_SETCFG_INFRARED: // (0x80000000|74) 修改红外报警配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_INFRARED"); break; case LastError.NET_ERROR_SETCFG_SOUNDALARM: // (0x80000000|75) 修改音频报警配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_SOUNDALARM"); break; case LastError.NET_ERROR_SETCFG_STORAGE: // (0x80000000|76) 修改存储位置配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_STORAGE"); break; case LastError.NET_AUDIOENCODE_NOTINIT: // (0x80000000|77) 音频编码接口没有成功初始化 msg = Res.string().getBundle().getString("NET_AUDIOENCODE_NOTINIT"); break; case LastError.NET_DATA_TOOLONGH: // (0x80000000|78) 数据过长 msg = Res.string().getBundle().getString("NET_DATA_TOOLONGH"); break; case LastError.NET_UNSUPPORTED: // (0x80000000|79) 备不支持该操作 msg = Res.string().getBundle().getString("NET_UNSUPPORTED"); break; case LastError.NET_DEVICE_BUSY: // (0x80000000|80) 设备资源不足 msg = Res.string().getBundle().getString("NET_DEVICE_BUSY"); break; case LastError.NET_SERVER_STARTED: // (0x80000000|81) 服务器已经启动 msg = Res.string().getBundle().getString("NET_SERVER_STARTED"); break; case LastError.NET_SERVER_STOPPED: // (0x80000000|82) 服务器尚未成功启动 msg = Res.string().getBundle().getString("NET_SERVER_STOPPED"); break; case LastError.NET_LISTER_INCORRECT_SERIAL: // (0x80000000|83) 输入序列号有误 msg = Res.string().getBundle().getString("NET_LISTER_INCORRECT_SERIAL"); break; case LastError.NET_QUERY_DISKINFO_FAILED: // (0x80000000|84) 获取硬盘信息失败 msg = Res.string().getBundle().getString("NET_QUERY_DISKINFO_FAILED"); break; case LastError.NET_ERROR_GETCFG_SESSION: // (0x80000000|85) 获取连接Session信息 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_SESSION"); break; case LastError.NET_USER_FLASEPWD_TRYTIME: // (0x80000000|86) 输入密码错误超过限制次数 msg = Res.string().getBundle().getString("NET_USER_FLASEPWD_TRYTIME"); break; case LastError.NET_LOGIN_ERROR_PASSWORD: // (0x80000000|100) 密码不正确 msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_PASSWORD"); break; case LastError.NET_LOGIN_ERROR_USER: // (0x80000000|101) 帐户不存在 msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_USER"); break; case LastError.NET_LOGIN_ERROR_TIMEOUT: // (0x80000000|102) 等待登录返回超时 msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_TIMEOUT"); break; case LastError.NET_LOGIN_ERROR_RELOGGIN: // (0x80000000|103) 帐号已登录 msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_RELOGGIN"); break; case LastError.NET_LOGIN_ERROR_LOCKED: // (0x80000000|104) 帐号已被锁定 msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_LOCKED"); break; case LastError.NET_LOGIN_ERROR_BLACKLIST: // (0x80000000|105) 帐号已被列为禁止名单 msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_BLACKLIST"); break; case LastError.NET_LOGIN_ERROR_BUSY: // (0x80000000|106) 资源不足,系统忙 msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_BUSY"); break; case LastError.NET_LOGIN_ERROR_CONNECT: // (0x80000000|107) 登录设备超时,请检查网络并重试 msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_CONNECT"); break; case LastError.NET_LOGIN_ERROR_NETWORK: // (0x80000000|108) 网络连接失败 msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_NETWORK"); break; case LastError.NET_LOGIN_ERROR_SUBCONNECT: // (0x80000000|109) 登录设备成功,但无法创建视频通道,请检查网 msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_SUBCONNECT"); break; case LastError.NET_LOGIN_ERROR_MAXCONNECT: // (0x80000000|110) 超过最大连接数 msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_MAXCONNECT"); break; case LastError.NET_LOGIN_ERROR_PROTOCOL3_ONLY: // (0x80000000|111) 只支持3代协议 msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_PROTOCOL3_ONLY"); break; case LastError.NET_LOGIN_ERROR_UKEY_LOST: // (0x80000000|112) 插入U盾或U盾信息错误 msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_UKEY_LOST"); break; case LastError.NET_LOGIN_ERROR_NO_AUTHORIZED: // (0x80000000|113) 客户端IP地址没有登录权限 msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_NO_AUTHORIZED"); break; case LastError.NET_LOGIN_ERROR_USER_OR_PASSOWRD: // (0x80000000|117) 账号或密码错误 msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_USER_OR_PASSOWRD"); break; case LastError.NET_LOGIN_ERROR_DEVICE_NOT_INIT: // (0x80000000|118) 设备尚未初始化,不能登录,请先初始化设备 msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_DEVICE_NOT_INIT"); break; case LastError.NET_RENDER_SOUND_ON_ERROR: // (0x80000000|120) Render库打开音频出错 msg = Res.string().getBundle().getString("NET_RENDER_SOUND_ON_ERROR"); break; case LastError.NET_RENDER_SOUND_OFF_ERROR: // (0x80000000|121) Render库关闭音频出错 msg = Res.string().getBundle().getString("NET_RENDER_SOUND_OFF_ERROR"); break; case LastError.NET_RENDER_SET_VOLUME_ERROR: // (0x80000000|122) Render库控制音量出错 msg = Res.string().getBundle().getString("NET_RENDER_SET_VOLUME_ERROR"); break; case LastError.NET_RENDER_ADJUST_ERROR: // (0x80000000|123) Render库设置画面参数出错 msg = Res.string().getBundle().getString("NET_RENDER_ADJUST_ERROR"); break; case LastError.NET_RENDER_PAUSE_ERROR: // (0x80000000|124) Render库暂停播放出错 msg = Res.string().getBundle().getString("NET_RENDER_PAUSE_ERROR"); break; case LastError.NET_RENDER_SNAP_ERROR: // (0x80000000|125) Render库抓图出错 msg = Res.string().getBundle().getString("NET_RENDER_SNAP_ERROR"); break; case LastError.NET_RENDER_STEP_ERROR: // (0x80000000|126) Render库步进出错 msg = Res.string().getBundle().getString("NET_RENDER_STEP_ERROR"); break; case LastError.NET_RENDER_FRAMERATE_ERROR: // (0x80000000|127) Render库设置帧率出错 msg = Res.string().getBundle().getString("NET_RENDER_FRAMERATE_ERROR"); break; case LastError.NET_RENDER_DISPLAYREGION_ERROR: // (0x80000000|128) Render库设置显示区域出错 msg = Res.string().getBundle().getString("NET_RENDER_DISPLAYREGION_ERROR"); break; case LastError.NET_RENDER_GETOSDTIME_ERROR: // (0x80000000|129) Render库获取当前播放时间出错 msg = Res.string().getBundle().getString("NET_RENDER_GETOSDTIME_ERROR"); break; case LastError.NET_GROUP_EXIST: // (0x80000000|140) 组名已存在 msg = Res.string().getBundle().getString("NET_GROUP_EXIST"); break; case LastError.NET_GROUP_NOEXIST: // (0x80000000|141) 组名不存在 msg = Res.string().getBundle().getString("NET_GROUP_NOEXIST"); break; case LastError.NET_GROUP_RIGHTOVER: // (0x80000000|142) 组的权限超出权限列表范围 msg = Res.string().getBundle().getString("NET_GROUP_RIGHTOVER"); break; case LastError.NET_GROUP_HAVEUSER: // (0x80000000|143) 组下有用户,不能删除 msg = Res.string().getBundle().getString("NET_GROUP_HAVEUSER"); break; case LastError.NET_GROUP_RIGHTUSE: // (0x80000000|144) 组的某个权限被用户使用,不能出除 msg = Res.string().getBundle().getString("NET_GROUP_RIGHTUSE"); break; case LastError.NET_GROUP_SAMENAME: // (0x80000000|145) 新组名同已有组名重复 msg = Res.string().getBundle().getString("NET_GROUP_SAMENAME"); break; case LastError.NET_USER_EXIST: // (0x80000000|146) 用户已存在 msg = Res.string().getBundle().getString("NET_USER_EXIST"); break; case LastError.NET_USER_NOEXIST: // (0x80000000|147) 用户不存在 msg = Res.string().getBundle().getString("NET_USER_NOEXIST"); break; case LastError.NET_USER_RIGHTOVER: // (0x80000000|148) 用户权限超出组权限 msg = Res.string().getBundle().getString("NET_USER_RIGHTOVER"); break; case LastError.NET_USER_PWD: // (0x80000000|149) 保留帐号,不容许修改密码 msg = Res.string().getBundle().getString("NET_USER_PWD"); break; case LastError.NET_USER_FLASEPWD: // (0x80000000|150) 密码不正确 msg = Res.string().getBundle().getString("NET_USER_FLASEPWD"); break; case LastError.NET_USER_NOMATCHING: // (0x80000000|151) 密码不匹配 msg = Res.string().getBundle().getString("NET_USER_NOMATCHING"); break; case LastError.NET_USER_INUSE: // (0x80000000|152) 账号正在使用中 msg = Res.string().getBundle().getString("NET_USER_INUSE"); break; case LastError.NET_ERROR_GETCFG_ETHERNET: // (0x80000000|300) 获取网卡配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_ETHERNET"); break; case LastError.NET_ERROR_GETCFG_WLAN: // (0x80000000|301) 获取无线网络信息失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_WLAN"); break; case LastError.NET_ERROR_GETCFG_WLANDEV: // (0x80000000|302) 获取无线网络设备失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_WLANDEV"); break; case LastError.NET_ERROR_GETCFG_REGISTER: // (0x80000000|303) 获取主动注册参数失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_REGISTER"); break; case LastError.NET_ERROR_GETCFG_CAMERA: // (0x80000000|304) 获取摄像头属性失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_CAMERA"); break; case LastError.NET_ERROR_GETCFG_INFRARED: // (0x80000000|305) 获取红外报警配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_INFRARED"); break; case LastError.NET_ERROR_GETCFG_SOUNDALARM: // (0x80000000|306) 获取音频报警配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_SOUNDALARM"); break; case LastError.NET_ERROR_GETCFG_STORAGE: // (0x80000000|307) 获取存储位置配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_STORAGE"); break; case LastError.NET_ERROR_GETCFG_MAIL: // (0x80000000|308) 获取邮件配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_MAIL"); break; case LastError.NET_CONFIG_DEVBUSY: // (0x80000000|309) 暂时无法设置 msg = Res.string().getBundle().getString("NET_CONFIG_DEVBUSY"); break; case LastError.NET_CONFIG_DATAILLEGAL: // (0x80000000|310) 配置数据不合法 msg = Res.string().getBundle().getString("NET_CONFIG_DATAILLEGAL"); break; case LastError.NET_ERROR_GETCFG_DST: // (0x80000000|311) 获取夏令时配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_DST"); break; case LastError.NET_ERROR_SETCFG_DST: // (0x80000000|312) 设置夏令时配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_DST"); break; case LastError.NET_ERROR_GETCFG_VIDEO_OSD: // (0x80000000|313) 获取视频OSD叠加配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_VIDEO_OSD"); break; case LastError.NET_ERROR_SETCFG_VIDEO_OSD: // (0x80000000|314) 设置视频OSD叠加配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_VIDEO_OSD"); break; case LastError.NET_ERROR_GETCFG_GPRSCDMA: // (0x80000000|315) 获取CDMA\GPRS网络配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_GPRSCDMA"); break; case LastError.NET_ERROR_SETCFG_GPRSCDMA: // (0x80000000|316) 设置CDMA\GPRS网络配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_GPRSCDMA"); break; case LastError.NET_ERROR_GETCFG_IPFILTER: // (0x80000000|317) 获取IP过滤配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_IPFILTER"); break; case LastError.NET_ERROR_SETCFG_IPFILTER: // (0x80000000|318) 设置IP过滤配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_IPFILTER"); break; case LastError.NET_ERROR_GETCFG_TALKENCODE: // (0x80000000|319) 获取语音对讲编码配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_TALKENCODE"); break; case LastError.NET_ERROR_SETCFG_TALKENCODE: // (0x80000000|320) 设置语音对讲编码配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_TALKENCODE"); break; case LastError.NET_ERROR_GETCFG_RECORDLEN: // (0x80000000|321) 获取录像打包长度配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_RECORDLEN"); break; case LastError.NET_ERROR_SETCFG_RECORDLEN: // (0x80000000|322) 设置录像打包长度配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_RECORDLEN"); break; case LastError.NET_DONT_SUPPORT_SUBAREA: // (0x80000000|323) 不支持网络硬盘分区 msg = Res.string().getBundle().getString("NET_DONT_SUPPORT_SUBAREA"); break; case LastError.NET_ERROR_GET_AUTOREGSERVER: // (0x80000000|324) 获取设备上主动注册服务器信息失败 msg = Res.string().getBundle().getString("NET_ERROR_GET_AUTOREGSERVER"); break; case LastError.NET_ERROR_CONTROL_AUTOREGISTER: // (0x80000000|325) 主动注册重定向注册错误 msg = Res.string().getBundle().getString("NET_ERROR_CONTROL_AUTOREGISTER"); break; case LastError.NET_ERROR_DISCONNECT_AUTOREGISTER: // (0x80000000|326) 断开主动注册服务器错误 msg = Res.string().getBundle().getString("NET_ERROR_DISCONNECT_AUTOREGISTER"); break; case LastError.NET_ERROR_GETCFG_MMS: // (0x80000000|327) 获取mms配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_MMS"); break; case LastError.NET_ERROR_SETCFG_MMS: // (0x80000000|328) 设置mms配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_MMS"); break; case LastError.NET_ERROR_GETCFG_SMSACTIVATION: // (0x80000000|329) 获取短信激活无线连接配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_SMSACTIVATION"); break; case LastError.NET_ERROR_SETCFG_SMSACTIVATION: // (0x80000000|330) 设置短信激活无线连接配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_SMSACTIVATION"); break; case LastError.NET_ERROR_GETCFG_DIALINACTIVATION: // (0x80000000|331) 获取拨号激活无线连接配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_DIALINACTIVATION"); break; case LastError.NET_ERROR_SETCFG_DIALINACTIVATION: // (0x80000000|332) 设置拨号激活无线连接配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_DIALINACTIVATION"); break; case LastError.NET_ERROR_GETCFG_VIDEOOUT: // (0x80000000|333) 查询视频输出参数配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_VIDEOOUT"); break; case LastError.NET_ERROR_SETCFG_VIDEOOUT: // (0x80000000|334) 设置视频输出参数配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_VIDEOOUT"); break; case LastError.NET_ERROR_GETCFG_OSDENABLE: // (0x80000000|335) 获取osd叠加使能配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_OSDENABLE"); break; case LastError.NET_ERROR_SETCFG_OSDENABLE: // (0x80000000|336) 设置osd叠加使能配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_OSDENABLE"); break; case LastError.NET_ERROR_SETCFG_ENCODERINFO: // (0x80000000|337) 设置数字通道前端编码接入配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_ENCODERINFO"); break; case LastError.NET_ERROR_GETCFG_TVADJUST: // (0x80000000|338) 获取TV调节配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_TVADJUST"); break; case LastError.NET_ERROR_SETCFG_TVADJUST: // (0x80000000|339) 设置TV调节配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_TVADJUST"); break; case LastError.NET_ERROR_CONNECT_FAILED: // (0x80000000|340) 请求建立连接失败 msg = Res.string().getBundle().getString("NET_ERROR_CONNECT_FAILED"); break; case LastError.NET_ERROR_SETCFG_BURNFILE: // (0x80000000|341) 请求刻录文件上传失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_BURNFILE"); break; case LastError.NET_ERROR_SNIFFER_GETCFG: // (0x80000000|342) 获取抓包配置信息失败 msg = Res.string().getBundle().getString("NET_ERROR_SNIFFER_GETCFG"); break; case LastError.NET_ERROR_SNIFFER_SETCFG: // (0x80000000|343) 设置抓包配置信息失败 msg = Res.string().getBundle().getString("NET_ERROR_SNIFFER_SETCFG"); break; case LastError.NET_ERROR_DOWNLOADRATE_GETCFG: // (0x80000000|344) 查询下载限制信息失败 msg = Res.string().getBundle().getString("NET_ERROR_DOWNLOADRATE_GETCFG"); break; case LastError.NET_ERROR_DOWNLOADRATE_SETCFG: // (0x80000000|345) 设置下载限制信息失败 msg = Res.string().getBundle().getString("NET_ERROR_DOWNLOADRATE_SETCFG"); break; case LastError.NET_ERROR_SEARCH_TRANSCOM: // (0x80000000|346) 查询串口参数失败 msg = Res.string().getBundle().getString("NET_ERROR_SEARCH_TRANSCOM"); break; case LastError.NET_ERROR_GETCFG_POINT: // (0x80000000|347) 获取预制点信息错误 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_POINT"); break; case LastError.NET_ERROR_SETCFG_POINT: // (0x80000000|348) 设置预制点信息错误 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_POINT"); break; case LastError.NET_SDK_LOGOUT_ERROR: // (0x80000000|349) SDK没有正常登出设备 msg = Res.string().getBundle().getString("NET_SDK_LOGOUT_ERROR"); break; case LastError.NET_ERROR_GET_VEHICLE_CFG: // (0x80000000|350) 获取车载配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GET_VEHICLE_CFG"); break; case LastError.NET_ERROR_SET_VEHICLE_CFG: // (0x80000000|351) 设置车载配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SET_VEHICLE_CFG"); break; case LastError.NET_ERROR_GET_ATM_OVERLAY_CFG: // (0x80000000|352) 获取atm叠加配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GET_ATM_OVERLAY_CFG"); break; case LastError.NET_ERROR_SET_ATM_OVERLAY_CFG: // (0x80000000|353) 设置atm叠加配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SET_ATM_OVERLAY_CFG"); break; case LastError.NET_ERROR_GET_ATM_OVERLAY_ABILITY: // (0x80000000|354) 获取atm叠加能力失败 msg = Res.string().getBundle().getString("NET_ERROR_GET_ATM_OVERLAY_ABILITY"); break; case LastError.NET_ERROR_GET_DECODER_TOUR_CFG: // (0x80000000|355) 获取解码器解码轮巡配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GET_DECODER_TOUR_CFG"); break; case LastError.NET_ERROR_SET_DECODER_TOUR_CFG: // (0x80000000|356) 设置解码器解码轮巡配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SET_DECODER_TOUR_CFG"); break; case LastError.NET_ERROR_CTRL_DECODER_TOUR: // (0x80000000|357) 控制解码器解码轮巡失败 msg = Res.string().getBundle().getString("NET_ERROR_CTRL_DECODER_TOUR"); break; case LastError.NET_GROUP_OVERSUPPORTNUM: // (0x80000000|358) 超出设备支持最大用户组数目 msg = Res.string().getBundle().getString("NET_GROUP_OVERSUPPORTNUM"); break; case LastError.NET_USER_OVERSUPPORTNUM: // (0x80000000|359) 超出设备支持最大用户数目 msg = Res.string().getBundle().getString("NET_USER_OVERSUPPORTNUM"); break; case LastError.NET_ERROR_GET_SIP_CFG: // (0x80000000|368) 获取SIP配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GET_SIP_CFG"); break; case LastError.NET_ERROR_SET_SIP_CFG: // (0x80000000|369) 设置SIP配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SET_SIP_CFG"); break; case LastError.NET_ERROR_GET_SIP_ABILITY: // (0x80000000|370) 获取SIP能力失败 msg = Res.string().getBundle().getString("NET_ERROR_GET_SIP_ABILITY"); break; case LastError.NET_ERROR_GET_WIFI_AP_CFG: // (0x80000000|371) 获取WIFI ap配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GET_WIFI_AP_CFG"); break; case LastError.NET_ERROR_SET_WIFI_AP_CFG: // (0x80000000|372) 设置WIFI ap配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SET_WIFI_AP_CFG"); break; case LastError.NET_ERROR_GET_DECODE_POLICY: // (0x80000000|373) 获取解码策略配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GET_DECODE_POLICY"); break; case LastError.NET_ERROR_SET_DECODE_POLICY: // (0x80000000|374) 设置解码策略配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SET_DECODE_POLICY"); break; case LastError.NET_ERROR_TALK_REJECT: // (0x80000000|375) 拒绝对讲 msg = Res.string().getBundle().getString("NET_ERROR_TALK_REJECT"); break; case LastError.NET_ERROR_TALK_OPENED: // (0x80000000|376) 对讲被其他客户端打开 msg = Res.string().getBundle().getString("NET_ERROR_TALK_OPENED"); break; case LastError.NET_ERROR_TALK_RESOURCE_CONFLICIT: // (0x80000000|377) 资源冲突 msg = Res.string().getBundle().getString("NET_ERROR_TALK_RESOURCE_CONFLICIT"); break; case LastError.NET_ERROR_TALK_UNSUPPORTED_ENCODE: // (0x80000000|378) 不支持的语音编码格式 msg = Res.string().getBundle().getString("NET_ERROR_TALK_UNSUPPORTED_ENCODE"); break; case LastError.NET_ERROR_TALK_RIGHTLESS: // (0x80000000|379) 无权限 msg = Res.string().getBundle().getString("NET_ERROR_TALK_RIGHTLESS"); break; case LastError.NET_ERROR_TALK_FAILED: // (0x80000000|380) 请求对讲失败 msg = Res.string().getBundle().getString("NET_ERROR_TALK_FAILED"); break; case LastError.NET_ERROR_GET_MACHINE_CFG: // (0x80000000|381) 获取机器相关配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GET_MACHINE_CFG"); break; case LastError.NET_ERROR_SET_MACHINE_CFG: // (0x80000000|382) 设置机器相关配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SET_MACHINE_CFG"); break; case LastError.NET_ERROR_GET_DATA_FAILED: // (0x80000000|383) 设备无法获取当前请求数据 msg = Res.string().getBundle().getString("NET_ERROR_GET_DATA_FAILED"); break; case LastError.NET_ERROR_MAC_VALIDATE_FAILED: // (0x80000000|384) MAC地址验证失败 msg = Res.string().getBundle().getString("NET_ERROR_MAC_VALIDATE_FAILED"); break; case LastError.NET_ERROR_GET_INSTANCE: // (0x80000000|385) 获取服务器实例失败 msg = Res.string().getBundle().getString("NET_ERROR_GET_INSTANCE"); break; case LastError.NET_ERROR_JSON_REQUEST: // (0x80000000|386) 生成的json字符串错误 msg = Res.string().getBundle().getString("NET_ERROR_JSON_REQUEST"); break; case LastError.NET_ERROR_JSON_RESPONSE: // (0x80000000|387) 响应的json字符串错误 msg = Res.string().getBundle().getString("NET_ERROR_JSON_RESPONSE"); break; case LastError.NET_ERROR_VERSION_HIGHER: // (0x80000000|388) 协议版本低于当前使用的版本 msg = Res.string().getBundle().getString("NET_ERROR_VERSION_HIGHER"); break; case LastError.NET_SPARE_NO_CAPACITY: // (0x80000000|389) 热备操作失败, 容量不足 msg = Res.string().getBundle().getString("NET_SPARE_NO_CAPACITY"); break; case LastError.NET_ERROR_SOURCE_IN_USE: // (0x80000000|390) 显示源被其他输出占用 msg = Res.string().getBundle().getString("NET_ERROR_SOURCE_IN_USE"); break; case LastError.NET_ERROR_REAVE: // (0x80000000|391) 高级用户抢占低级用户资源 msg = Res.string().getBundle().getString("NET_ERROR_REAVE"); break; case LastError.NET_ERROR_NETFORBID: // (0x80000000|392) 禁止入网 msg = Res.string().getBundle().getString("NET_ERROR_NETFORBID"); break; case LastError.NET_ERROR_GETCFG_MACFILTER: // (0x80000000|393) 获取MAC过滤配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_MACFILTER"); break; case LastError.NET_ERROR_SETCFG_MACFILTER: // (0x80000000|394) 设置MAC过滤配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_MACFILTER"); break; case LastError.NET_ERROR_GETCFG_IPMACFILTER: // (0x80000000|395) 获取IP/MAC过滤配置失败 msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_IPMACFILTER"); break; case LastError.NET_ERROR_SETCFG_IPMACFILTER: // (0x80000000|396) 设置IP/MAC过滤配置失败 msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_IPMACFILTER"); break; case LastError.NET_ERROR_OPERATION_OVERTIME: // (0x80000000|397) 当前操作超时 msg = Res.string().getBundle().getString("NET_ERROR_OPERATION_OVERTIME"); break; case LastError.NET_ERROR_SENIOR_VALIDATE_FAILED: // (0x80000000|398) 高级校验失败 msg = Res.string().getBundle().getString("NET_ERROR_SENIOR_VALIDATE_FAILED"); break; case LastError.NET_ERROR_DEVICE_ID_NOT_EXIST: // (0x80000000|399) 设备ID不存在 msg = Res.string().getBundle().getString("NET_ERROR_DEVICE_ID_NOT_EXIST"); break; case LastError.NET_ERROR_UNSUPPORTED: // (0x80000000|400) 不支持当前操作 msg = Res.string().getBundle().getString("NET_ERROR_UNSUPPORTED"); break; case LastError.NET_ERROR_PROXY_DLLLOAD: // (0x80000000|401) 代理库加载失败 msg = Res.string().getBundle().getString("NET_ERROR_PROXY_DLLLOAD"); break; case LastError.NET_ERROR_PROXY_ILLEGAL_PARAM: // (0x80000000|402) 代理用户参数不合法 msg = Res.string().getBundle().getString("NET_ERROR_PROXY_ILLEGAL_PARAM"); break; case LastError.NET_ERROR_PROXY_INVALID_HANDLE: // (0x80000000|403) 代理句柄无效 msg = Res.string().getBundle().getString("NET_ERROR_PROXY_INVALID_HANDLE"); break; case LastError.NET_ERROR_PROXY_LOGIN_DEVICE_ERROR: // (0x80000000|404) 代理登入前端设备失败 msg = Res.string().getBundle().getString("NET_ERROR_PROXY_LOGIN_DEVICE_ERROR"); break; case LastError.NET_ERROR_PROXY_START_SERVER_ERROR: // (0x80000000|405) 启动代理服务失败 msg = Res.string().getBundle().getString("NET_ERROR_PROXY_START_SERVER_ERROR"); break; case LastError.NET_ERROR_SPEAK_FAILED: // (0x80000000|406) 请求喊话失败 msg = Res.string().getBundle().getString("NET_ERROR_SPEAK_FAILED"); break; case LastError.NET_ERROR_NOT_SUPPORT_F6: // (0x80000000|407) 设备不支持此F6接口调用 msg = Res.string().getBundle().getString("NET_ERROR_NOT_SUPPORT_F6"); break; case LastError.NET_ERROR_CD_UNREADY: // (0x80000000|408) 光盘未就绪 msg = Res.string().getBundle().getString("NET_ERROR_CD_UNREADY"); break; case LastError.NET_ERROR_DIR_NOT_EXIST: // (0x80000000|409) 目录不存在 msg = Res.string().getBundle().getString("NET_ERROR_DIR_NOT_EXIST"); break; case LastError.NET_ERROR_UNSUPPORTED_SPLIT_MODE: // (0x80000000|410) 设备不支持的分割模式 msg = Res.string().getBundle().getString("NET_ERROR_UNSUPPORTED_SPLIT_MODE"); break; case LastError.NET_ERROR_OPEN_WND_PARAM: // (0x80000000|411) 开窗参数不合法 msg = Res.string().getBundle().getString("NET_ERROR_OPEN_WND_PARAM"); break; case LastError.NET_ERROR_LIMITED_WND_COUNT: // (0x80000000|412) 开窗数量超过限制 msg = Res.string().getBundle().getString("NET_ERROR_LIMITED_WND_COUNT"); break; case LastError.NET_ERROR_UNMATCHED_REQUEST: // (0x80000000|413) 请求命令与当前模式不匹配 msg = Res.string().getBundle().getString("NET_ERROR_UNMATCHED_REQUEST"); break; case LastError.NET_RENDER_ENABLELARGEPICADJUSTMENT_ERROR: // (0x80000000|414) Render库启用高清图像内部调整策略出错 msg = Res.string().getBundle().getString("NET_RENDER_ENABLELARGEPICADJUSTMENT_ERROR"); break; case LastError.NET_ERROR_UPGRADE_FAILED: // (0x80000000|415) 设备升级失败 msg = Res.string().getBundle().getString("NET_ERROR_UPGRADE_FAILED"); break; case LastError.NET_ERROR_NO_TARGET_DEVICE: // (0x80000000|416) 找不到目标设备 msg = Res.string().getBundle().getString("NET_ERROR_NO_TARGET_DEVICE"); break; case LastError.NET_ERROR_NO_VERIFY_DEVICE: // (0x80000000|417) 找不到验证设备 msg = Res.string().getBundle().getString("NET_ERROR_NO_VERIFY_DEVICE"); break; case LastError.NET_ERROR_CASCADE_RIGHTLESS: // (0x80000000|418) 无级联权限 msg = Res.string().getBundle().getString("NET_ERROR_CASCADE_RIGHTLESS"); break; case LastError.NET_ERROR_LOW_PRIORITY: // (0x80000000|419) 低优先级 msg = Res.string().getBundle().getString("NET_ERROR_LOW_PRIORITY"); break; case LastError.NET_ERROR_REMOTE_REQUEST_TIMEOUT: // (0x80000000|420) 远程设备请求超时 msg = Res.string().getBundle().getString("NET_ERROR_REMOTE_REQUEST_TIMEOUT"); break; case LastError.NET_ERROR_LIMITED_INPUT_SOURCE: // (0x80000000|421) 输入源超出最大路数限制 msg = Res.string().getBundle().getString("NET_ERROR_LIMITED_INPUT_SOURCE"); break; case LastError.NET_ERROR_SET_LOG_PRINT_INFO: // (0x80000000|422) 设置日志打印失败 msg = Res.string().getBundle().getString("NET_ERROR_SET_LOG_PRINT_INFO"); break; case LastError.NET_ERROR_PARAM_DWSIZE_ERROR: // (0x80000000|423) 入参的dwsize字段出错 msg = Res.string().getBundle().getString("NET_ERROR_PARAM_DWSIZE_ERROR"); break; case LastError.NET_ERROR_LIMITED_MONITORWALL_COUNT: // (0x80000000|424) 电视墙数量超过上限 msg = Res.string().getBundle().getString("NET_ERROR_LIMITED_MONITORWALL_COUNT"); break; case LastError.NET_ERROR_PART_PROCESS_FAILED: // (0x80000000|425) 部分过程执行失败 msg = Res.string().getBundle().getString("NET_ERROR_PART_PROCESS_FAILED"); break; case LastError.NET_ERROR_TARGET_NOT_SUPPORT: // (0x80000000|426) 该功能不支持转发 msg = Res.string().getBundle().getString("NET_ERROR_TARGET_NOT_SUPPORT"); break; case LastError.NET_ERROR_VISITE_FILE: // (0x80000000|510) 访问文件失败 msg = Res.string().getBundle().getString("NET_ERROR_VISITE_FILE"); break; case LastError.NET_ERROR_DEVICE_STATUS_BUSY: // (0x80000000|511) 设备忙 msg = Res.string().getBundle().getString("NET_ERROR_DEVICE_STATUS_BUSY"); break; case LastError.NET_USER_PWD_NOT_AUTHORIZED: // (0x80000000|512)修改密码无权限 msg = Res.string().getBundle().getString("NET_USER_PWD_NOT_AUTHORIZED"); break; case LastError.NET_USER_PWD_NOT_STRONG: // (0x80000000|513) 密码强度不够 msg = Res.string().getBundle().getString("NET_USER_PWD_NOT_STRONG"); break; case LastError.NET_ERROR_NO_SUCH_CONFIG: // (0x80000000|514) 没有对应的配置 msg = Res.string().getBundle().getString("NET_ERROR_NO_SUCH_CONFIG"); break; case LastError.NET_ERROR_AUDIO_RECORD_FAILED: // (0x80000000|515) 录音失败 msg = Res.string().getBundle().getString("NET_ERROR_AUDIO_RECORD_FAILED"); break; case LastError.NET_ERROR_SEND_DATA_FAILED: // (0x80000000|516) 数据发送失败 msg = Res.string().getBundle().getString("NET_ERROR_SEND_DATA_FAILED"); break; case LastError.NET_ERROR_OBSOLESCENT_INTERFACE: // (0x80000000|517) 废弃接口 msg = Res.string().getBundle().getString("NET_ERROR_OBSOLESCENT_INTERFACE"); break; case LastError.NET_ERROR_INSUFFICIENT_INTERAL_BUF: // (0x80000000|518) 内部缓冲不足 msg = Res.string().getBundle().getString("NET_ERROR_INSUFFICIENT_INTERAL_BUF"); break; case LastError.NET_ERROR_NEED_ENCRYPTION_PASSWORD: // (0x80000000|519) 修改设备ip时,需要校验密码 msg = Res.string().getBundle().getString("NET_ERROR_NEED_ENCRYPTION_PASSWORD"); break; case LastError.NET_ERROR_NOSUPPORT_RECORD: // (0x80000000|520) 设备不支持此记录集 msg = Res.string().getBundle().getString("NET_ERROR_NOSUPPORT_RECORD"); break; case LastError.NET_ERROR_SERIALIZE_ERROR: // (0x80000000|1010) 数据序列化错误 msg = Res.string().getBundle().getString("NET_ERROR_SERIALIZE_ERROR"); break; case LastError.NET_ERROR_DESERIALIZE_ERROR: // (0x80000000|1011) 数据反序列化错误 msg = Res.string().getBundle().getString("NET_ERROR_DESERIALIZE_ERROR"); break; case LastError.NET_ERROR_LOWRATEWPAN_ID_EXISTED: // (0x80000000|1012) 该无线ID已存在 msg = Res.string().getBundle().getString("NET_ERROR_LOWRATEWPAN_ID_EXISTED"); break; case LastError.NET_ERROR_LOWRATEWPAN_ID_LIMIT: // (0x80000000|1013) 无线ID数量已超限 msg = Res.string().getBundle().getString("NET_ERROR_LOWRATEWPAN_ID_LIMIT"); break; case LastError.NET_ERROR_LOWRATEWPAN_ID_ABNORMAL: // (0x80000000|1014) 无线异常添加 msg = Res.string().getBundle().getString("NET_ERROR_LOWRATEWPAN_ID_ABNORMAL"); break; case LastError.NET_ERROR_ENCRYPT: // (0x80000000|1015) 加密数据失败 msg = Res.string().getBundle().getString("NET_ERROR_ENCRYPT"); break; case LastError.NET_ERROR_PWD_ILLEGAL: // (0x80000000|1016) 新密码不合规范 msg = Res.string().getBundle().getString("NET_ERROR_PWD_ILLEGAL"); break; case LastError.NET_ERROR_DEVICE_ALREADY_INIT: // (0x80000000|1017) 设备已经初始化 msg = Res.string().getBundle().getString("NET_ERROR_DEVICE_ALREADY_INIT"); break; case LastError.NET_ERROR_SECURITY_CODE: // (0x80000000|1018) 安全码错误 msg = Res.string().getBundle().getString("NET_ERROR_SECURITY_CODE"); break; case LastError.NET_ERROR_SECURITY_CODE_TIMEOUT: // (0x80000000|1019) 安全码超出有效期 msg = Res.string().getBundle().getString("NET_ERROR_SECURITY_CODE_TIMEOUT"); break; case LastError.NET_ERROR_GET_PWD_SPECI: // (0x80000000|1020) 获取密码规范失败 msg = Res.string().getBundle().getString("NET_ERROR_GET_PWD_SPECI"); break; case LastError.NET_ERROR_NO_AUTHORITY_OF_OPERATION: // (0x80000000|1021) 无权限进行该操作 msg = Res.string().getBundle().getString("NET_ERROR_NO_AUTHORITY_OF_OPERATION"); break; case LastError.NET_ERROR_DECRYPT: // (0x80000000|1022) 解密数据失败 msg = Res.string().getBundle().getString("NET_ERROR_DECRYPT"); break; case LastError.NET_ERROR_2D_CODE: // (0x80000000|1023) 2D code校验失败 msg = Res.string().getBundle().getString("NET_ERROR_2D_CODE"); break; case LastError.NET_ERROR_INVALID_REQUEST: // (0x80000000|1024) 非法的RPC请求 msg = Res.string().getBundle().getString("NET_ERROR_INVALID_REQUEST"); break; case LastError.NET_ERROR_PWD_RESET_DISABLE: // (0x80000000|1025) 密码重置功能已关闭 msg = Res.string().getBundle().getString("NET_ERROR_PWD_RESET_DISABLE"); break; case LastError.NET_ERROR_PLAY_PRIVATE_DATA: // (0x80000000|1026) 显示私有数据,比如规则框等失败 msg = Res.string().getBundle().getString("NET_ERROR_PLAY_PRIVATE_DATA"); break; case LastError.NET_ERROR_ROBOT_OPERATE_FAILED: // (0x80000000|1027) 机器人操作失败 msg = Res.string().getBundle().getString("NET_ERROR_ROBOT_OPERATE_FAILED"); break; case LastError.NET_ERROR_PHOTOSIZE_EXCEEDSLIMIT: // (0x80000000|1028) 图片大小超限 msg = Res.string().getBundle().getString("NET_ERROR_PHOTOSIZE_EXCEEDSLIMIT"); break; case LastError.NET_ERROR_USERID_INVALID: // (0x80000000|1029) 用户ID不存在 msg = Res.string().getBundle().getString("NET_ERROR_USERID_INVALID"); break; case LastError.NET_ERROR_EXTRACTFEATURE_FAILED: // (0x80000000|1030) 照片特征值提取失败 msg = Res.string().getBundle().getString("NET_ERROR_EXTRACTFEATURE_FAILED"); break; case LastError.NET_ERROR_PHOTO_EXIST: // (0x80000000|1031) 照片已存在 msg = Res.string().getBundle().getString("NET_ERROR_PHOTO_EXIST"); break; case LastError.NET_ERROR_PHOTO_OVERFLOW: // (0x80000000|1032) 照片数量超过上限 msg = Res.string().getBundle().getString("NET_ERROR_PHOTO_OVERFLOW"); break; case LastError.NET_ERROR_CHANNEL_ALREADY_OPENED: // (0x80000000|1033) 通道已经打开 msg = Res.string().getBundle().getString("NET_ERROR_CHANNEL_ALREADY_OPENED"); break; case LastError.NET_ERROR_CREATE_SOCKET: // (0x80000000|1034) 创建套接字失败 msg = Res.string().getBundle().getString("NET_ERROR_CREATE_SOCKET"); break; case LastError.NET_ERROR_CHANNEL_NUM: // (0x80000000|1035) 通道号错误 msg = Res.string().getBundle().getString("NET_ERROR_CHANNEL_NUM"); break; case LastError.NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_ID_EXCEED: // (0x80000000|1051) 组ID超过最大值 msg = Res.string().getBundle().getString("NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_ID_EXCEED"); break; default: msg = Res.string().getBundle().getString("NET_ERROR"); break; } return msg; } } ard-work/src/main/java/com/ruoyi/device/dhsdk/common/EventTaskCommonQueue.java
对比新文件 @@ -0,0 +1,79 @@ package com.ruoyi.device.dhsdk.common; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.LinkedBlockingDeque; public class EventTaskCommonQueue { // 设置一个队列,容量看情况改 private final int MAX_TASK_COUNT = 10000; // 队列容量 private final LinkedBlockingDeque<EventTaskHandler> eventTasks = new LinkedBlockingDeque<EventTaskHandler>(MAX_TASK_COUNT); // 起一个线程池 private final int MAX_THREAD_COUNT = 10; // 线程池容量 private ExecutorService eventQueueService = Executors.newFixedThreadPool(MAX_THREAD_COUNT); // 用于检验服务运行状态 private volatile boolean running = true; // 用于查看当前线程状态 private Future<?> eventQueueThreadStatus; // 初始化 public void init() { eventQueueThreadStatus = eventQueueService.submit(new Thread(new Runnable() { @Override public void run() { while (running) { try { EventTaskHandler task = eventTasks.take(); //开始一个任务 try { task.eventTaskProcess(); // 主要的运行函数 } catch (Exception e) { System.err.println("任务处理发生错误"); // error } } catch (InterruptedException e) { System.err.println("任务已意外停止"); // error running = false; } } } }, "Event call back thread init")); } // 向队列添加新的任务 public boolean addEvent(EventTaskHandler eventHandler) { if (!running) { System.out.println("任务已停止"); // warning return false; } boolean success = eventTasks.offer(eventHandler); if (!success) { // 队列已满,无法再添加 System.out.println("添加到事件队列失败"); } return success; } // 手动启动服务 public void activeService() { running = true; if (eventQueueService.isShutdown()) { eventQueueService = Executors.newFixedThreadPool(MAX_THREAD_COUNT);; init(); System.out.println("线程池已关闭,重新初始化线程池及任务"); } if (eventQueueThreadStatus.isDone()) { init(); System.out.println("线程池任务结束,重新初始化任务"); } } // 手动关闭服务 public void destroy() { running = false; eventQueueService.shutdownNow(); } } ard-work/src/main/java/com/ruoyi/device/dhsdk/common/EventTaskHandler.java
对比新文件 @@ -0,0 +1,6 @@ package com.ruoyi.device.dhsdk.common; public interface EventTaskHandler { void eventTaskProcess(); } ard-work/src/main/java/com/ruoyi/device/dhsdk/common/ListPictureShowDialog.java
对比新文件 @@ -0,0 +1,34 @@ package com.ruoyi.device.dhsdk.common; import javax.swing.*; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; /* * 智能交通列表双击展示图片框架 */ public class ListPictureShowDialog extends JDialog { private static final long serialVersionUID = 1L; public ListPictureShowDialog() { setLayout(new BorderLayout()); setModal(true); pack(); setSize(800, 600); setResizable(false); setLocationRelativeTo(null); setDefaultCloseOperation(DISPOSE_ON_CLOSE); // 释放窗体 listPanel = new PaintPanel(); add(listPanel, BorderLayout.CENTER); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { dispose(); } }); } public PaintPanel listPanel; } ard-work/src/main/java/com/ruoyi/device/dhsdk/common/PaintPanel.java
对比新文件 @@ -0,0 +1,32 @@ package com.ruoyi.device.dhsdk.common; import javax.swing.*; import java.awt.*; /* * 带背景的绘图面板 */ public class PaintPanel extends JPanel { private static final long serialVersionUID = 1L; private Image image; //背景图片 public PaintPanel() { super(); setOpaque(true); //非透明 setLayout(null); setBackground(Color.GRAY); setForeground(new Color(0, 0, 0)); } //设置图片的方法 public void setImage(Image image) { this.image = image; } protected void paintComponent(Graphics g) { //重写绘制组件外观 if(image != null) { g.drawImage(image, 0, 0, getWidth(), getHeight(), this);//绘制图片与组件大小相同 } super.paintComponent(g); // 执行超类方法 } } ard-work/src/main/java/com/ruoyi/device/dhsdk/common/Res.java
对比新文件 @@ -0,0 +1,2883 @@ package com.ruoyi.device.dhsdk.common; import com.ruoyi.device.dhsdk.lib.NetSDKLib; import com.ruoyi.device.dhsdk.lib.NetSDKLib.SdkStructure; import com.ruoyi.device.dhsdk.lib.NetSDKLib.*; import java.util.Locale; import java.util.ResourceBundle; public final class Res { private static ResourceBundle bundle; private Res() { switchLanguage(LanguageType.Chinese); } private static class StringBundleHolder { private static Res instance = new Res(); } public static Res string() { return StringBundleHolder.instance; } public static enum LanguageType { English, Chinese } public ResourceBundle getBundle() { return bundle; } /** * \if ENGLISH_LANG * Switch between Chinese and English * \else * 中英文切换 * \endif */ public void switchLanguage(LanguageType type) { switch(type) { case Chinese: bundle = ResourceBundle.getBundle("resources", new Locale("zh", "CN")); break; case English: bundle = ResourceBundle.getBundle("resources", new Locale("en", "US")); break; default: break; } } public String getSwitchLanguage() { return bundle.getString("SWITCH_LANGUAGE"); } public String getRealplay() { return bundle.getString("REALPLAY"); } public String getMultiRealplay() { return bundle.getString("MULTIREALPLAY"); } public String getDownloadRecord() { return bundle.getString("DOWNLOAD_RECORD"); } public String getITSEvent() { return bundle.getString("ITS_EVENT"); } public String getOnline() { return bundle.getString("ONLINE"); } public String getDisConnectReconnecting() { return bundle.getString("DISCONNECT_RECONNECTING"); } public String getDisConnect() { return bundle.getString("DISCONNECT"); } public String getPromptMessage() { return bundle.getString("PROMPT_MESSAGE"); } public String getErrorMessage() { return bundle.getString("ERROR_MESSAGE"); } public String getReconnectSucceed() { return bundle.getString("RECONNECT_SUCCEED"); } public String getSucceed() { return bundle.getString("SUCCEED"); } public String getFailed() { return bundle.getString("FAILED"); } public String getYear() { return bundle.getString("YEAR"); } public String getMonth() { return bundle.getString("MONTH"); } public String getDay() { return bundle.getString("DAY"); } public String getHour() { return bundle.getString("HOUR"); } public String getMinute() { return bundle.getString("MINUTE"); } public String getSecond() { return bundle.getString("SECOND"); } public String getSunday() { return bundle.getString("SUNDAY"); } public String getMonday() { return bundle.getString("MONDAY"); } public String getTuesday() { return bundle.getString("TUESDAY"); } public String getWednesday() { return bundle.getString("WEDNESDAY"); } public String getThursday() { return bundle.getString("THURSDAY"); } public String getFriday() { return bundle.getString("FRIDAY"); } public String getSaturday() { return bundle.getString("SATURDAY"); } public String[] getWeek() { String[] weekdays = {getSunday(), getMonday(), getTuesday(), getWednesday(), getThursday(), getFriday(), getSaturday() }; return weekdays; } public String getConfirm() { return bundle.getString("CONFIRM"); } public String getCancel() { return bundle.getString("CANCEL"); } public String getDateChooser() { return bundle.getString("DATE_CHOOSER"); } public String getFunctionList() { return bundle.getString("FUNCTIONLIST"); } public String getLogin() { return bundle.getString("LOGIN"); } public String getLoginSuccess() { return bundle.getString("LOGIN_SUCCEED"); } public String getFillingRules() { return bundle.getString("FILLING_RULES"); } public String getLogout() { return bundle.getString("LOGOUT"); } public String getDeviceIp() { return bundle.getString("DEVICE_IP"); } public String getIp() { return bundle.getString("IP"); } public String getPort() { return bundle.getString("DEVICE_PORT"); } public String getUserId() { return bundle.getString("USER_ID"); } public String getTemp() { return bundle.getString("TEMPERATURE"); } public String getMaskstutas() { return bundle.getString("MASK_STATUS"); } public String getUserName(boolean space) { return bundle.getString("USER_NAME"); } public String getCardNo() { return bundle.getString("CARD_NO"); } public String getUserName() { return bundle.getString("USERNAME"); } public String getPassword() { return bundle.getString("PASSWORD"); } public String getLoginFailed() { return bundle.getString("LOGIN_FAILED"); } public String getInputDeviceIP() { return bundle.getString("PLEASE_INPUT_DEVICE_IP"); } public String getInputDevicePort() { return bundle.getString("PLEASE_INPUT_DEVICE_PORT"); } public String getInputUsername() { return bundle.getString("PLEASE_INPUT_DEVICE_USERNAME"); } public String getInputPassword() { return bundle.getString("PLEASE_INPUT_DEVICE_PASSWORD"); } public String getInputConfirmPassword() { return bundle.getString("PLEASE_INPUT_CONFIRM_PASSWORD"); } public String getStartRealPlay() { return bundle.getString("START_REALPLAY"); } public String getStopRealPlay() { return bundle.getString("STOP_REALPLAY"); } public String getChn() { return bundle.getString("CHN"); } public String getChannel() { return bundle.getString("CHANNEL"); } public String getStreamType() { return bundle.getString("STREAM_TYPE"); } public String getMasterAndSub() { return bundle.getString("MASTER_AND_SUB_STREAM"); } public String getMasterStream() { return bundle.getString("MASTER_STREAM"); } public String getSubStream() { return bundle.getString("SUB_STREAM"); } public String getPTZ() { return bundle.getString("PTZ"); } public String getPtzControlAndCapture() { return bundle.getString("PTZCONTROL_CAPTURE"); } public String getCapturePicture() { return bundle.getString("CAPTURE_PICTURE"); } public String getLocalCapture() { return bundle.getString("LOCAL_CAPTURE"); } public String getRemoteCapture() { return bundle.getString("REMOTE_CAPTURE"); } public String getTimerCapture() { return bundle.getString("TIMER_CAPTURE"); } public String getStopCapture() { return bundle.getString("STOP_CAPTURE"); } public String getInterval() { return bundle.getString("INTERVAL"); } public String getTimeIntervalIllegal() { return bundle.getString("TIME_INTERVAL_ILLEGAL"); } public String getNeedStartRealPlay() { return bundle.getString("PLEASE_START_REALPLAY"); } public String getPTZControl() { return bundle.getString("PTZ_CONTROL"); } public String getLeftUp() { return bundle.getString("LEFT_UP"); } public String getUp() { return bundle.getString("UP"); } public String getRightUp() { return bundle.getString("RIGHT_UP"); } public String getLeft() { return bundle.getString("LEFT"); } public String getRight() { return bundle.getString("RIGHT"); } public String getLeftDown() { return bundle.getString("LEFT_DOWN"); } public String getDown() { return bundle.getString("DOWN"); } public String getRightDown() { return bundle.getString("RIGHT_DOWN"); } public String getSpeed() { return bundle.getString("SPEED"); } public String getZoomAdd() { return bundle.getString("ZOOM_ADD"); } public String getZoomDec() { return bundle.getString("ZOOM_DEC"); } public String getFocusAdd() { return bundle.getString("FOCUS_ADD"); } public String getFocusDec() { return bundle.getString("FOCUS_DEC"); } public String getIrisAdd() { return bundle.getString("IRIS_ADD"); } public String getIrisDec() { return bundle.getString("IRIS_DEC"); } public String getIndex() { return bundle.getString("INDEX"); } public String getEventPicture() { return bundle.getString("EVENT_PICTURE"); } public String getPlatePicture() { return bundle.getString("PLATE_PICTURE"); } public String getEventName() { return bundle.getString("EVENT_NAME"); } public String getLicensePlate() { return bundle.getString("LICENSE_PLATE"); } public String getEventTime() { return bundle.getString("EVENT_TIME"); } public String getPlateType() { return bundle.getString("PLATE_TYPE"); } public String getPlateColor() { return bundle.getString("PLATE_COLOR"); } public String getVehicleColor() { return bundle.getString("VEHICLE_COLOR"); } public String getVehicleType() { return bundle.getString("VEHICLE_TYPE"); } public String getVehicleSize() { return bundle.getString("VEHICLE_SIZE"); } public String getFileCount() { return bundle.getString("FILE_COUNT"); } public String getFileIndex() { return bundle.getString("FILE_INDEX"); } public String getGroupId() { return bundle.getString("GROUP_ID"); } public String getIllegalPlace() { return bundle.getString("ILLEGAL_PLACE"); } public String getLaneNumber() { return bundle.getString("LANE_NUMBER"); } public String getEventInfo() { return bundle.getString("EVENT_INFO"); } public String getNoPlate() { return bundle.getString("NO_PLATENUMBER"); } public String[] getTrafficTableName() { String[] name = {getIndex(), getEventName(), getLicensePlate(), getEventTime(), getPlateType(), getPlateColor(), getVehicleColor(), getVehicleType(), getVehicleSize(), getFileCount(), getFileIndex(), getGroupId(), getIllegalPlace(), getLaneNumber()}; return name; } public String getOperate() { return bundle.getString("OPERATE"); } public String getAttach() { return bundle.getString("ATTACH"); } public String getDetach() { return bundle.getString("DETACH"); } public String getOpenStrobe() { return bundle.getString("OPEN_STROBE"); } public String getCloseStrobe() { return bundle.getString("CLOSE_STROBE"); } public String getOpenStrobeFailed() { return bundle.getString("OPEN_STROBE_FAILED"); } public String getManualCapture() { return bundle.getString("MANUAL_CAPTURE"); } public String getManualCaptureSucceed() { return bundle.getString("MANUALSNAP_SUCCEED"); } public String getManualCaptureFailed() { return bundle.getString("MANUALSNAP_FAILED"); } /* * 车辆大小对照表 */ public String getTrafficSize(int nVehicleSize) { String vehicleClass = ""; for(int i = 0; i < 5; i++) { if( ((byte)nVehicleSize & (1 << i)) > 0 ) { switch (i) { case 0: vehicleClass = bundle.getString("LIGHT_DUTY"); break; case 1: vehicleClass = bundle.getString("MEDIUM"); break; case 2: vehicleClass = bundle.getString("OVER_SIZE"); break; case 3: vehicleClass = bundle.getString("MINI_SIZE"); break; case 4: vehicleClass = bundle.getString("LARGE_SIZE"); break; } } } return vehicleClass; } /* * 获取事件名称 */ public String getEventName(int type) { String name = ""; switch (type) { case NetSDKLib.EVENT_IVS_TRAFFICJUNCTION: ///< 交通路口事件 name = bundle.getString("EVENT_IVS_TRAFFICJUNCTION"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_RUNREDLIGHT: ///< 闯红灯事件 name = bundle.getString("EVENT_IVS_TRAFFIC_RUNREDLIGHT"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_OVERLINE: ///< 压车道线事件 name = bundle.getString("EVENT_IVS_TRAFFIC_OVERLINE"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_RETROGRADE: ///< 逆行事件 name = bundle.getString("EVENT_IVS_TRAFFIC_RETROGRADE"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_TURNLEFT: ///< 违章左转 name = bundle.getString("EVENT_IVS_TRAFFIC_TURNLEFT"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_TURNRIGHT: ///< 违章右转 name = bundle.getString("EVENT_IVS_TRAFFIC_TURNRIGHT"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_UTURN: ///< 违章掉头 name = bundle.getString("EVENT_IVS_TRAFFIC_UTURN"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_OVERSPEED: ///< 超速 name = bundle.getString("EVENT_IVS_TRAFFIC_OVERSPEED"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_UNDERSPEED: ///< 低速 name = bundle.getString("EVENT_IVS_TRAFFIC_UNDERSPEED"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_PARKING: ///< 违章停车 name = bundle.getString("EVENT_IVS_TRAFFIC_PARKING"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_WRONGROUTE: ///< 不按车道行驶 name = bundle.getString("EVENT_IVS_TRAFFIC_WRONGROUTE"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_CROSSLANE: ///< 违章变道 name = bundle.getString("EVENT_IVS_TRAFFIC_CROSSLANE"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_OVERYELLOWLINE: ///< 压黄线 name = bundle.getString("EVENT_IVS_TRAFFIC_OVERYELLOWLINE"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE: ///< 黄牌车占道事件 name = bundle.getString("EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY: ///< 斑马线行人优先事件 name = bundle.getString("EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_MANUALSNAP: ///< 交通手动抓拍事件 name = bundle.getString("EVENT_IVS_TRAFFIC_MANUALSNAP"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_VEHICLEINROUTE: ///< 有车占道事件 name = bundle.getString("EVENT_IVS_TRAFFIC_VEHICLEINROUTE"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE: ///< 占用公交车道事件 name = bundle.getString("EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_BACKING: ///< 违章倒车事件 name = bundle.getString("EVENT_IVS_TRAFFIC_BACKING"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING: ///< 车位有车事件 name = bundle.getString("EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING: ///< 车位无车事件 name = bundle.getString("EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING"); break; case NetSDKLib.EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT: ///< 交通未系安全带事件 name = bundle.getString("EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT"); break; default: break; } return name; } public String getRecordType() { return bundle.getString("RECORD_TYPE"); } public String getStartTime() { return bundle.getString("START_TIME"); } public String getEndTime() { return bundle.getString("END_TIME"); } public String[] getDownloadTableName() { String[] name = {getIndex(), getChannel(), getRecordType(), getStartTime(), getEndTime()}; return name; } public String getDownloadByFile() { return bundle.getString("DOWNLOAD_RECORD_BYFILE"); } public String getQuery() { return bundle.getString("QUERY"); } public String getDownload() { return bundle.getString("DOWNLOAD"); } public String getStopDownload() { return bundle.getString("STOP_DOWNLOAD"); } public String getDownloadByTime() { return bundle.getString("DOWNLOAD_RECORD_BYTIME"); } public String getSelectTimeAgain() { return bundle.getString("PLEASE_SELECT_TIME_AGAIN"); } public String getSelectRowWithData() { return bundle.getString("PLEASE_FIRST_SELECT_ROW_WITH_DATA"); } public String getQueryRecord() { return bundle.getString("PLEASE_FIRST_QUERY_RECORD"); } public String getDownloadCompleted() { return bundle.getString("DOWNLOAD_COMPLETED"); } /** * 获取录像类型 */ public String getRecordTypeStr(int nRecordFileType) { String recordTypeStr = ""; switch(nRecordFileType) { case 0: recordTypeStr = bundle.getString("GENERAL_RECORD"); break; case 1: recordTypeStr = bundle.getString("ALARM_RECORD"); break; case 2: recordTypeStr = bundle.getString("MOTION_DETECTION"); break; case 3: recordTypeStr = bundle.getString("CARD_NUMBER_RECORD"); break; case 5: recordTypeStr = bundle.getString("INTELLIGENT_DETECTION"); break; case 19: recordTypeStr = bundle.getString("POS_RECORD"); break; default: break; } return recordTypeStr; } public int getRecordTypeInt(String recordFileStr) { int recordType = -1; if(recordFileStr.equals(bundle.getString("GENERAL_RECORD"))) { recordType = 0; } else if(recordFileStr.equals(bundle.getString("ALARM_RECORD"))) { recordType = 1; } else if(recordFileStr.equals(bundle.getString("MOTION_DETECTION"))) { recordType = 2; } else if(recordFileStr.equals(bundle.getString("CARD_NUMBER_RECORD"))) { recordType = 3; }else if(recordFileStr.equals(bundle.getString("INTELLIGENT_DETECTION"))){ recordType=11; }else if(recordFileStr.equals(bundle.getString("POS_RECORD"))){ recordType=19; } return recordType; } /** * 语音对讲 */ public String getTalk() { return bundle.getString("TALK"); } public String getTransmitType() { return bundle.getString("TRANSMIT_TYPE"); } public String getLocalTransmitType() { return bundle.getString("LOCAL_TRANSMIT_TYPE"); } public String getRemoteTransmitType() { return bundle.getString("REMOTE_TRANSMIT_TYPE"); } public String getTransmitChannel() { return bundle.getString("TRANSMIT_CHANNEL"); } public String getStartTalk() { return bundle.getString("START_TALK"); } public String getStopTalk() { return bundle.getString("STOP_TALK"); } public String getTalkFailed() { return bundle.getString("TALK_FAILED"); } public String getDeviceSearchAndInit() { return bundle.getString("DEVICESEARCH_DEVICEINIT"); } public String getDeviceSearchOperate() { return bundle.getString("DEVICESEARCH_OPERATE"); } public String getDeviceSearchResult() { return bundle.getString("DEVICESEARCH_RESULT"); } public String getDeviceInit() { return bundle.getString("DEVICEINIT"); } public String getStartSearch() { return bundle.getString("START_SEARCH"); } public String getStopSearch() { return bundle.getString("STOP_SEARCH"); } public String getPleaseSelectInitializedDevice() { return bundle.getString("PLEASE_FIRST_SELECT_INITIALIZED_DEVICE"); } public String getDeviceSearch() { return bundle.getString("DEVICESEARCH"); } public String getDevicePointToPointSearch() { return bundle.getString("DEVICE_POINT_TO_POINT_SEARCH"); } public String getStartIp() { return bundle.getString("START_IP"); } public String getEndIp() { return bundle.getString("END_IP"); } public String getControlScope() { return bundle.getString("THE_IP_CONTROL_SCOPE"); } public String getDeviceType() { return bundle.getString("DEVICE_TYPE"); } public String getDeviceMac() { return bundle.getString("MAC"); } public String getDeviceSn() { return bundle.getString("SN"); } public String getDeviceInitState() { return bundle.getString("DEVICE_INIT_STATE"); } public String getInitPasswd() { return bundle.getString("INIT_PASSWD"); } public String[] getDeviceTableName() { String[] name = {getIndex(), getDeviceInitState(), getIpVersion(), getDeviceIp(), getPort(), getSubMask(), getGetway(), getDeviceMac(), getDeviceType(), getDetailType(), getHttpPort()}; return name; } public String getIpVersion() { return bundle.getString("IP_VERSION"); } public String getSubMask() { return bundle.getString("SUB_MASK"); } public String getGetway() { return bundle.getString("GETWAY"); } public String getDetailType() { return bundle.getString("DETAIL_TYPE"); } public String getHttpPort() { return bundle.getString("HTTP_PORT"); } public String getLocalIp() { return bundle.getString("LOCAL_IP"); } public String getInitialized() { return bundle.getString("INITIALIZED"); } public String getNotInitialized() { return bundle.getString("NOT_INITIALIZED"); } public String getOldDevice() { return bundle.getString("OLD_DEVICE"); } public String getNotSupportInitialization() { return bundle.getString("DONOT_SUPPORT_INITIALIZATION"); } public String getPhone() { return bundle.getString("PHONE"); } public String getMail() { return bundle.getString("MAIL"); } public String getInputPhone() { return bundle.getString("PLEASE_INPUT_PHONE"); } public String getInputMail() { return bundle.getString("PLEASE_INPUT_MAIL"); } public String getConfirmPassword() { return bundle.getString("CONFIRM_PASSWORD"); } public String getInconsistent() { return bundle.getString("INCONSISTENT"); } public String getCheckIp() { return bundle.getString("PLEASE_CHECK_IP"); } // 0-老设备,没有初始化功能 1-未初始化账号 2-已初始化账户 public String getInitStateInfo(int initStatus) { String initStateInfo = ""; switch(initStatus) { case 0: initStateInfo = getInitialized(); break; case 1: initStateInfo = getNotInitialized(); break; case 2: initStateInfo = getInitialized(); break; } return initStateInfo; } public String getAlarmListen() { return bundle.getString("ALARM_LISTEN"); } public String getStartListen() { return bundle.getString("START_LISTEN"); } public String getStopListen() { return bundle.getString("STOP_LISTEN"); } public String getStopListenFailed(){ return bundle.getString("STOP_LISTEN_FAILED"); } public String getShowAlarmEvent() { return bundle.getString("SHOW_ALARM_EVENT"); } public String getAlarmMessage() { return bundle.getString("ALARM_MESSAGE"); } public String getExternalAlarm() { return bundle.getString("EXTERNAL_ALARM"); } public String getMotionAlarm() { return bundle.getString("MOTION_ALARM"); } public String getVideoLostAlarm() { return bundle.getString("VIDEOLOST_ALARM"); } public String getShelterAlarm() { return bundle.getString("SHELTER_ALARM"); } public String getDiskFullAlarm() { return bundle.getString("DISKFULL_ALARM"); } public String getDiskErrorAlarm() { return bundle.getString("DISKERROR_ALARM"); } public String getAlarmListenFailed() { return bundle.getString("ALARM_LISTEN_FAILED"); } public String getStart() { return bundle.getString("START"); } public String getStop() { return bundle.getString("STOP"); } public String getDeviceControl() { return bundle.getString("DEVICE_CONTROL"); } public String getDeviceReboot() { return bundle.getString("DEVICE_REBOOT"); } public String getSyncTime() { return bundle.getString("SYNCHRONIZE_TIME"); } public String getCurrentTime() { return bundle.getString("CURRENT_TIME"); } public String getReboot() { return bundle.getString("REBOOT"); } public String getRebootTips() { return bundle.getString("REBOOT_TIPS"); } public String getGetTime() { return bundle.getString("GET_TIME"); } public String getSetTime() { return bundle.getString("SET_TIME"); } public String getOperateSuccess() { return bundle.getString("OPERATE_SUCCESS"); } public String getFaceRecognition() { return bundle.getString("FACERECOGNITION"); } public String[] getGroupTable() { String[] faceTable = {getFaceGroupId(), getFaceGroupName(), bundle.getString("PERSON_COUNT")}; return faceTable; } public String getFaceGroupId() { return bundle.getString("FACE_GROUP_ID"); } public String getFaceGroupName() { return bundle.getString("FACE_GROUP_NAME"); } public String getGroupOperate() { return bundle.getString("GROUP_OPERATE"); } public String getPersonOperate() { return bundle.getString("PERSON_OPERATE"); } public String getGlobalPicture() { return bundle.getString("GLOBAL_PICTURE"); } public String getPersonPicture() { return bundle.getString("PERSON_PICTURE"); } public String getCandidatePicture() { return bundle.getString("CANDIDATE_PICTURE"); } public String getTime() { return bundle.getString("TIME"); } public String getSex() { return bundle.getString("SEX"); } public String getAge() { return bundle.getString("AGE"); } public String getColor() { return bundle.getString("COLOR"); } public String getEye() { return bundle.getString("EYE"); } public String getMouth() { return bundle.getString("MOUTH"); } public String getMask() { return bundle.getString("MASK"); } public String getBeard() { return bundle.getString("BEARD"); } public String getName() { return bundle.getString("NAME"); } public String getBirthday() { return bundle.getString("BIRTHDAY"); } public String getIdNo() { return bundle.getString("ID_NO"); } public String getIdType() { return bundle.getString("ID_TYPE"); } public String getSimilarity() { return bundle.getString("SIMILARITY"); } public String getFaceDetectEvent() { return bundle.getString("FACE_DETECT_EVENT"); } public String getFaceRecognitionEvent() { return bundle.getString("FACE_RECOGNITION_EVENT"); } public String getUid() { return bundle.getString("UID"); } public String getGlasses() { return bundle.getString("GLASSES"); } public String getPicturePath() { return bundle.getString("PICTURE_PATH"); } public String getFaceLibraryID() { return bundle.getString("FACE_LIBRARY_ID"); } public String getFaceLibraryName() { return bundle.getString("FACE_LIBRARY_NAME"); } public String[] getPersonTable() { String[] personTable = {getUid(), getName(), getSex(), getBirthday(), getIdType(), getIdNo()}; return personTable; } public String[] getDispositionTable() { String[] dispositionTable = {getChannel(), getSimilarity()}; return dispositionTable; } public String getUnKnow() { return bundle.getString("UNKNOW"); } public String getMale() { return bundle.getString("MALE"); } public String getFemale() { return bundle.getString("FEMALE"); } public String[] getSexStringsFind() { String[] faceSexStr = {getUnLimited(), getMale(), getFemale()}; return faceSexStr; } public String[] getIdStringsFind() { String[] idStr = {getUnLimited(), getIdCard(), getPassport(),}; return idStr; } public String[] getSexStrings() { String[] faceSexStr = {getUnKnow(), getMale(), getFemale()}; return faceSexStr; } public String[] getIdStrings() { String[] idStr = {getUnKnow(), getIdCard(), getPassport(),}; return idStr; } public String getIdCard() { return bundle.getString("ID_CARD"); } public String getPassport() { return bundle.getString("PASSPORT"); } public String getOfficeCard() { return bundle.getString("OFFICE_CARD"); } public String getIdType(int idType) { String str = ""; switch(idType) { case 0: str = getUnKnow(); break; case 1: str = getIdCard(); break; case 2: str = getPassport(); break; case 3: str = getOfficeCard(); break; default : str = getUnKnow(); break; } return str; } public String getSex(int sex) { String str = ""; switch(sex) { case 0: str = getUnKnow(); break; case 1: str = getMale(); break; case 2: str = getFemale(); break; default : str = getUnKnow(); break; } return str; } public String getUnLimited() { return bundle.getString("UNLIMITED"); } public String getUnidentified() { return bundle.getString("UNIDENTIFIED"); } public String getHaveBeard() { return bundle.getString("HAVE_BEARD"); } public String getNoBeard() { return bundle.getString("NO_BEARD"); } public String getBeardState(int beard) { String str = ""; switch (beard) { case 0: str = getUnKnow(); break; case 1: str = getUnidentified(); break; case 2: str = getNoBeard(); break; case 3: str = getHaveBeard(); break; default: str = getUnKnow(); break; } return str; } public String getOpenMouth() { return bundle.getString("OPEN_MOUTH"); } public String getCloseMouth() { return bundle.getString("CLOSE_MOUTH"); } public String getMouthState(int mouth) { String str = ""; switch (mouth) { case 0: str = getUnKnow(); break; case 1: str = getUnidentified(); break; case 2: str = getCloseMouth(); break; case 3: str = getOpenMouth(); break; default: str = getUnKnow(); break; } return str; } public String getYellowColor() { return bundle.getString("YELLOW_COLOR"); } public String getBlackColor() { return bundle.getString("BLACK_COLOR"); } public String getWhiteColor() { return bundle.getString("WHITE_COLOR"); } public String getColor(int color) { String str = ""; switch (color) { case 0: str = getUnKnow(); break; case 1: str = getUnidentified(); break; case 2: str = getYellowColor(); break; case 3: str = getBlackColor(); break; case 4: str = getWhiteColor(); break; default: str = getUnKnow(); break; } return str; } public String getOpenEye() { return bundle.getString("OPEN_EYE"); } public String getCloseEye() { return bundle.getString("CLOSE_EYE"); } public String getEyeState(int eye) { String str = getUnidentified(); switch (eye) { case 0: str = getUnKnow(); break; case 1: str = getUnidentified(); break; case 2: str = getCloseEye(); break; case 3: str = getOpenEye(); break; default: str = getUnKnow(); break; } return str; } public String getSmile() { return bundle.getString("SMILE"); } public String getAnger() { return bundle.getString("ANGER"); } public String getSadness() { return bundle.getString("SADNESS"); } public String getDisgust() { return bundle.getString("DISGUST"); } public String getFear() { return bundle.getString("FEAR"); } public String getSurprise() { return bundle.getString("SURPRISE"); } public String getNeutral() { return bundle.getString("NEUTRAL"); } public String getLaugh() { return bundle.getString("LAUGH"); } public String getFaceFeature(int type) { String str = ""; switch (type) { case 0: str = getUnKnow(); break; case 1: str = getWearGlasses(); break; case 2: str = getSmile(); break; case 3: str = getAnger(); break; case 4: str = getSadness(); break; case 5: str = getDisgust(); break; case 6: str = getFear(); break; case 7: str = getSurprise(); break; case 8: str = getNeutral(); break; case 9: str = getLaugh(); break; default: str = getUnKnow(); break; } return str; } public String getWearMask() { return bundle.getString("WEAR_MASK"); } public String geNoMask() { return bundle.getString("NO_MASK"); } public String getMaskState(int type) { String maskStateStr = ""; switch (type) { case 0: maskStateStr = getUnKnow(); break; case 1: maskStateStr = getUnidentified(); break; case 2: maskStateStr = geNoMask(); break; case 3: maskStateStr = getWearMask(); break; default: maskStateStr = getUnKnow(); break; } return maskStateStr; } public String getWearGlasses() { return bundle.getString("WEAR_GLASSES"); } public String getNoGlasses() { return bundle.getString("NO_GLASSES"); } public String getGlasses(int byGlasses) { String glassesStr = ""; switch (byGlasses) { case 0: glassesStr = getUnKnow(); break; case 1: glassesStr = getNoGlasses(); break; case 2: glassesStr = getWearGlasses(); break; default: break; } return glassesStr; } public String getAdd() { return bundle.getString("ADD"); } public String getModify() { return bundle.getString("MODIFY"); } public String getSelectData() { return bundle.getString("SELECT_DATA"); } public String getDelete() { return bundle.getString("DELETE"); } public String getFresh() { return bundle.getString("FRESH"); } public String getAddGroup() { return bundle.getString("ADD_GROUP"); } public String getModifyGroup() { return bundle.getString("MODIFY_GROUP"); } public String getDelGroup() { return bundle.getString("DEL_GROUP"); } public String getDisposition() { return bundle.getString("DISPOSITION"); } public String getDelDisposition() { return bundle.getString("DEL_DISPOSITION"); } public String getSimilarityRange() { return bundle.getString("SIMILARITY_RANGE"); } public String getFindCondition() { return bundle.getString("FIND_CONDITION"); } public String getFindPerson() { return bundle.getString("FIND_PERSON"); } public String getAddPerson() { return bundle.getString("ADD_PERSON"); } public String getModifyPerson() { return bundle.getString("MODIFY_PERSON"); } public String getDelPerson() { return bundle.getString("DEL_PERSON"); } public String getPreviousPage() { return bundle.getString("PREVIOUSPAGE"); } public String getLastPage() { return bundle.getString("LASTPAGE"); } public String getSelectPicture() { return bundle.getString("SELECT_PICTURE"); } public String getSearchByPic() { return bundle.getString("SEARCH_BY_PIC"); } public String getDownloadQueryPicture() { return bundle.getString("DOWNLOAD_QUERY_PICTURE"); } public String getFaceLibrary() { return bundle.getString("FACE_LIBRARY"); } public String getChooseFacePic() { return bundle.getString("CHOOSE_FACE_PIC"); } public String getHistoryLibrary() { return bundle.getString("HISTORY_LIBRARY"); } public String getEventType() { return bundle.getString("EVENT_TYPE"); } public String getStranger() { return bundle.getString("STRANGER"); } public String getInputGroupName() { return bundle.getString("PLEASE_INPUT_GROUPNAME"); } public String getSelectGroup() { return bundle.getString("PLEASE_SELECT_GROUP"); } public String getSelectPerson() { return bundle.getString("PLEASE_SELECT_PERSON"); } public String getAddDispositionInfo() { return bundle.getString("PLEASE_ADD_DISPOSITION_INFO"); } public String getSelectDelDispositionInfo() { return bundle.getString("PLEASE_SELECT_DEL_DISPOSITION_INFO"); } public String getPagesNumber() { return bundle.getString("PAGES_NUMBER"); } public String getAutoRegister() { return bundle.getString("AUTOREGISTER"); } public String getAutoRegisterListen() { return bundle.getString("AUTOREGISTER_LISTEN"); } public String getDeviceConfig() { return bundle.getString("DEVICE_CONFIG"); } public String getDeviceList() { return bundle.getString("DEVICE_LIST"); } public String getDeviceManager() { return bundle.getString("DEVICE_MANAGER"); } public String getAddDevice() { return bundle.getString("ADD_DEVICE"); } public String getModifyDevice() { return bundle.getString("MODIFY_DEVICE"); } public String getDeleteDevice() { return bundle.getString("DELETE_DEVICE"); } public String getClearDevice() { return bundle.getString("CLEAR_DEVICE"); } public String getImportDevice() { return bundle.getString("IMPORT_DEVICE"); } public String getExportDevice() { return bundle.getString("EXPORT_DEVICE"); } public String getFunctionOperate() { return bundle.getString("FUNCTION") + bundle.getString("OPERATE"); } public String getDeviceID() { return bundle.getString("DEVICE_ID"); } public String getEnable() { return bundle.getString("ENABLE"); } public String getRegisterAddress() { return bundle.getString("REGISTER_ADDRESS"); } public String getRegisterPort() { return bundle.getString("REGISTER_PORT"); } public String getGet() { return bundle.getString("GET"); } public String getSet() { return bundle.getString("SET"); } public String getAlreadyExisted() { return bundle.getString("ALREADY_EXISTED"); } public String getWhetherNoToCover() { return bundle.getString("ALREADY_EXISTED_WHETHER_OR_NOT_TO_COVER"); } public String getFileOpened(){ return bundle.getString("FILE_OPEN_PLEASE_CLOSE_FILE"); } public String getImportCompletion() { return bundle.getString("IMPORT_COMPLETION"); } public String getExportCompletion() { return bundle.getString("EXPORT_COMPLETION"); } public String getFileNotExist() { return bundle.getString("FILE_NOT_EXIST"); } public String getRecord() { return bundle.getString("RECORD"); } public String getInput() { return bundle.getString("PLEASE_INPUT"); } public String getMaximumSupport() { return bundle.getString("MAX_SUPPORT_100"); } public String getDeviceLogined() { return bundle.getString("DEVICE_LOGIN"); } public String getAttendance() { return bundle.getString("ATTENDANCE"); } public String getFingerPrintOperate() { return bundle.getString("FINGERPRINT_OPERATE"); } public String getUserOperate() { return bundle.getString("USER_OPERATE"); } public String getOperateByUserId() { return bundle.getString("OPERATE_BY_USER_ID"); } public String getOperateByFingerPrintId() { return bundle.getString("OPERATE_BY_FINGERPRINT_ID"); } public String getSearch() { return bundle.getString("SEARCH"); } public String getQueryCondition() { return bundle.getString("QUERY_CONDITION"); } public String getFingerPrintId() { return bundle.getString("FINGERPRINT_ID"); } public String getSearchFingerPrint() { return bundle.getString("SEARCH_FINGERPRINT"); } public String getAddFingerPrint() { return bundle.getString("ADD_FINGERPRINT"); } public String getDeleteFingerPrint() { return bundle.getString("DELETE_FINGERPRINT"); } public String getSubscribe() { return bundle.getString("SUBSCRIBE"); } public String getUnSubscribe() { return bundle.getString("UNSUBSCRIBE"); } public String getUserList() { return bundle.getString("USER_LIST"); } public String getNextPage() { return bundle.getString("NEXT_PAGE"); } public String getUserInfo() { return bundle.getString("USER_INFO"); } public String getDoorOpenMethod() { return bundle.getString("DOOROPEN_METHOD"); } public String getFingerPrint() { return bundle.getString("FINGERPRINT"); } public String getFingerPrintInfo() { return bundle.getString("FINGERPRINT_INFO"); } public String getFingerPrintData() { return bundle.getString("FINGERPRINT_DATA"); } public String getCard() { return bundle.getString("CARD"); } public String getDeleteFingerPrintPrompt() { return bundle.getString("DELETE_FINGERPRINT_PROMPT"); } public String getSubscribeFailed() { return bundle.getString("SUBSCRIBE_FAILED"); } public String getFingerPrintIdIllegal() { return bundle.getString("FINGERPRINT_ID_ILLEGAL"); } public String getcFingerPrintCollection() { return bundle.getString("FINGERPRINT_COLLECTION"); } public String getStartCollection() { return bundle.getString("START_COLLECTION"); } public String getStopCollection() { return bundle.getString("STOP_COLLECTION"); } public String getInCollection() { return bundle.getString("IN_THE_COLLECTION"); } public String getcCompleteCollection() { return bundle.getString("COLLECTION_COMPLETED"); } public String getCollectionFailed() { return bundle.getString("COLLECTION_FAILED"); } public String getFingerPrintIdNotExist() { return bundle.getString("FINGERPRINT_ID_NOT_EXIST"); } public String getUserIdExceedLength() { return bundle.getString("USER_ID_EXCEED_LENGTH"); } public String getUserNameExceedLength() { return bundle.getString("USER_NAME_EXCEED_LENGTH"); } public String getCardNoExceedLength() { return bundle.getString("CARD_NO_EXCEED_LENGTH"); } public String getCardNameExceedLength() { return bundle.getString("CARD_NAME_EXCEED_LENGTH"); } public String getCardPasswdExceedLength() { return bundle.getString("CARD_PASSWD_EXCEED_LENGTH"); } public String getGate() { return bundle.getString("GATE"); } public String getCardOperate() { return bundle.getString("CARD_OPERATE"); } public String getCardInfo() { return bundle.getString("CARD_INFO"); } public String getCardManager() { return bundle.getString("CARD_MANAGER"); } public String getClear() { return bundle.getString("CLEAR"); } public String getOpenStatus() { return bundle.getString("OPEN_STATUS"); } public String getOpenMethod() { return bundle.getString("OPEN_METHOD"); } public String getCardName() { return bundle.getString("CARD_NAME"); } public String getCardStatus() { return bundle.getString("CARD_STATUS"); } public String getCardPassword() { return bundle.getString("CARD_PASSWORD"); } public String getCardType() { return bundle.getString("CARD_TYPE"); } public String getCardNum() { return bundle.getString("CARD_NUM"); } public String getUseTimes() { return bundle.getString("USE_TIMES"); } public String getIsFirstEnter() { return bundle.getString("IS_FIRST_ENTER"); } public String getIsValid() { return bundle.getString("IS_VALID"); } public String getValidPeriod() { return bundle.getString("VALID_PERIOD"); } public String getValidStartTime() { return bundle.getString("VALID_START_TIME"); } public String getValidEndTime() { return bundle.getString("VALID_END_TIME"); } public String getRecordNo() { return bundle.getString("RECORD_NO"); } public String getFirstEnter() { return bundle.getString("FIRST_ENTER"); } public String getNoFirstEnter() { return bundle.getString("NO_FIRST_ENTER"); } public String getValid() { return bundle.getString("VALID"); } public String getInValid() { return bundle.getString("INVALID"); } public String getSelectCard() { return bundle.getString("PLEASE_SELECT_CARD"); } public String getInputCardNo() { return bundle.getString("PLEASE_INPUT_CARDNO"); } public String getInputUserId() { return bundle.getString("PLEASE_INPUT_USERID"); } public String getWantClearAllInfo() { return bundle.getString("WANT_CLEAR_ALL_INFO"); } public String getFailedAddCard() { return bundle.getString("ADD_CARD_INDO_FAILED"); } public String getSucceedAddCardAndPerson() { return bundle.getString("ADD_CARD_INFO_AND_PERSON_PICTURE_SUCCEED"); } public String getSucceedAddCardButFailedAddPerson() { return bundle.getString("ADD_CARD_INFO_SUCCEED_BUT_ADD_PERSON_PICTURE_FAILED"); } public String getCardExistedSucceedAddPerson() { return bundle.getString("CARD_EXISTED_ADD_PERSON_PICTURE_SUCCEED"); } public String getSucceedModifyCard() { return bundle.getString("MODIFY_CARD_INFO_SUCCEED"); } public String getFailedModifyCard() { return bundle.getString("MODIFY_CARD_INFO_FAILED"); } public String getSucceedModifyCardAndPerson() { return bundle.getString("MODIFY_CARD_INFO_AND_PERSON_PICTURE_SUCCEED"); } public String getSucceedModifyCardButFailedModifyPerson() { return bundle.getString("MODIFY_CARD_INFO_SUCCEED_BUT_MODIFY_PERSON_PICTURE_FAILED"); } public String[] getCardTable() { return new String[] {getIndex(), getCardNo(), getCardName(), getRecordNo(), getUserId(), getCardPassword(), getCardStatus(), getCardType(), getUseTimes(), getIsFirstEnter(), getIsValid(), getValidStartTime(), getValidEndTime()}; } /* * 用于列表显示 */ public String getCardStatus(int status) { String statusString = ""; switch(status) { case NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_UNKNOWN: // 未知 statusString = bundle.getString("STATE_UNKNOWN"); break; case NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_NORMAL: // 正常 statusString = bundle.getString("STATE_NORMAL"); break; case NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_LOSE: // 挂失 statusString = bundle.getString("STATE_LOSE"); break; case NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_LOGOFF: // 注销 statusString = bundle.getString("STATE_LOGOFF"); break; case NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_FREEZE: // 冻结 statusString = bundle.getString("STATE_FREEZE"); break; case NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_ARREARAGE: // 欠费 statusString = bundle.getString("STATE_ARREARS"); break; case NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_OVERDUE: // 逾期 statusString = bundle.getString("STATE_OVERDUE"); break; case NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_PREARREARAGE: // 预欠费 statusString = bundle.getString("STATE_PREARREARS"); break; default: statusString = bundle.getString("STATE_UNKNOWN"); break; } return statusString; } /* * 根据控件的索引,获取对应的卡状态的Int值, 用于添加 和 修改卡信息 */ public int getCardStatusInt(int index) { int status = 0; switch(index) { case 1: // 未知 status = NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_UNKNOWN; break; case 0: // 正常 status = NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_NORMAL; break; case 2: // 挂失 status = NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_LOSE; break; case 3: // 注销 status = NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_LOGOFF; break; case 4: // 冻结 status = NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_FREEZE; break; case 5: // 欠费 status = NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_ARREARAGE; break; case 6: // 逾期 status = NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_OVERDUE; break; case 7: // 预欠费 status = NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_PREARREARAGE; break; default: status = NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_UNKNOWN; break; } return status; } /* * 根据字符串,获取控件对应的索引 */ public int getCardStatusChomBoxIndex(String status) { int index = 0; if(status.equals(bundle.getString("STATE_UNKNOWN"))) { index = 1; } else if(status.equals(bundle.getString("STATE_NORMAL"))){ index = 0; } else if(status.equals(bundle.getString("STATE_LOSE"))) { index = 2; } else if(status.equals(bundle.getString("STATE_LOGOFF"))) { index = 3; } else if(status.equals(bundle.getString("STATE_FREEZE"))) { index = 4; } else if(status.equals(bundle.getString("STATE_ARREARS"))) { index = 5; } else if(status.equals(bundle.getString("STATE_OVERDUE"))) { index = 6; } else if(status.equals(bundle.getString("STATE_PREARREARS"))) { index = 7; } return index; } public String[] getCardStatusList() { return new String[]{ bundle.getString("STATE_NORMAL"), bundle.getString("STATE_UNKNOWN"), bundle.getString("STATE_LOSE"), bundle.getString("STATE_LOGOFF"), bundle.getString("STATE_FREEZE"), bundle.getString("STATE_ARREARS"), bundle.getString("STATE_OVERDUE"), bundle.getString("STATE_PREARREARS")}; } /* * 用于列表显示 */ public String getCardType(int type) { String cardTypeString = ""; switch(type) { case NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_UNKNOWN: // 未知 cardTypeString = bundle.getString("CARD_UNKNOW"); break; case NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_GENERAL: // 一般卡 cardTypeString = bundle.getString("CARD_GENERAL"); break; case NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_VIP: // cardTypeString = bundle.getString("CARD_VIP"); break; case NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_GUEST: // 来宾卡 cardTypeString = bundle.getString("CARD_GUEST"); break; case NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_PATROL: // 巡逻卡 cardTypeString = bundle.getString("CARD_PATROL"); break; case NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_BLACKLIST: // 禁止名单卡 cardTypeString = bundle.getString("CARD_BACKLIST"); break; case NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_CORCE: // 胁迫卡 cardTypeString = bundle.getString("CARD_COERCE"); break; case NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_POLLING: // 巡检卡 cardTypeString = bundle.getString("CARD_POLLING"); break; case NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_MOTHERCARD: // 母卡 cardTypeString = bundle.getString("CARD_MOTHERCARD"); break; default: cardTypeString = bundle.getString("CARD_UNKNOW"); break; } return cardTypeString; } /* * 根据控件索引,获取对应的卡类型Int值 */ public int getCardTypeInt(int index) { int type = 0; switch(index) { case 1: type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_UNKNOWN; break; case 0: type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_GENERAL; break; case 2: type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_VIP; break; case 3: type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_GUEST; break; case 4: type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_PATROL; break; case 5: type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_BLACKLIST; break; case 6: type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_CORCE; break; case 7: type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_POLLING; break; case 8: type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_MOTHERCARD; break; default: type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_UNKNOWN; break; } return type; } /* * 根据字符串,获取控件的索引 */ public int getCardTypeChomBoxIndex(String type) { int index = 0; if(type.equals(bundle.getString("CARD_UNKNOW"))) { index = 1; } else if(type.equals(bundle.getString("CARD_GENERAL"))){ index = 0; } else if(type.equals(bundle.getString("CARD_VIP"))) { index = 2; } else if(type.equals(bundle.getString("CARD_GUEST"))) { index = 3; } else if(type.equals(bundle.getString("CARD_PATROL"))) { index = 4; } else if(type.equals(bundle.getString("CARD_BACKLIST"))) { index = 5; } else if(type.equals(bundle.getString("CARD_COERCE"))) { index = 6; } else if(type.equals(bundle.getString("CARD_POLLING"))) { index = 7; } else if(type.equals(bundle.getString("CARD_MOTHERCARD"))) { index = 8; } return index; } public String[] getCardTypeList() { return new String[]{ bundle.getString("CARD_GENERAL"), bundle.getString("CARD_UNKNOW"), bundle.getString("CARD_VIP"), bundle.getString("CARD_GUEST"), bundle.getString("CARD_PATROL"), bundle.getString("CARD_BACKLIST"), bundle.getString("CARD_COERCE"), bundle.getString("CARD_POLLING"), bundle.getString("CARD_MOTHERCARD")}; } public String getMaskStatus(int emMaskStatus) { String MaskStatus = ""; switch(emMaskStatus) { case EM_MASK_STATE_TYPE.EM_MASK_STATE_UNKNOWN: MaskStatus = bundle.getString("EM_MASK_STATE_UNKNOWN"); break; case EM_MASK_STATE_TYPE.EM_MASK_STATE_NODISTI: MaskStatus = bundle.getString("EM_MASK_STATE_NODISTI"); break; case EM_MASK_STATE_TYPE.EM_MASK_STATE_NOMASK: MaskStatus = bundle.getString("EM_MASK_STATE_NOMASK"); break; case EM_MASK_STATE_TYPE.EM_MASK_STATE_WEAR: MaskStatus = bundle.getString("EM_MASK_STATE_WEAR"); break; } return MaskStatus; } public String getOpenMethods(int emOpenMethod) { String openMethods = ""; switch(emOpenMethod) { case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_UNKNOWN: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_UNKNOWN"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_PWD_ONLY: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_PWD_ONLY"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_FIRST: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_FIRST"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_PWD_FIRST: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_PWD_FIRST"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_REMOTE: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_REMOTE"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_BUTTON: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_BUTTON"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_PWD_CARD_FINGERPRINT: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_PWD_CARD_FINGERPRINT"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_PWD_FINGERPRINT: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_PWD_FINGERPRINT"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_FINGERPRINT: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_FINGERPRINT"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_PERSONS: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_PERSONS"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_KEY: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_KEY"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_COERCE_PWD: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_COERCE_PWD"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_QRCODE: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_QRCODE"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FACE_RECOGNITION: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FACE_RECOGNITION"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_AND_IDCARD: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_AND_IDCARD"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_BLUETOOTH: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_BLUETOOTH"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CUSTOM_PASSWORD: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CUSTOM_PASSWORD"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_USERID_AND_PWD: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_USERID_AND_PWD"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FACE_AND_PWD: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FACE_AND_PWD"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_PWD: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_PWD"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FACE_OR_PWD: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FACE_OR_PWD"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_PWD: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_PWD"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE_AND_PWD: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE_AND_PWD"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE_AND_PWD: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE_AND_PWD"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_PWD: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_PWD"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_AND_PWD_AND_FACE: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_AND_PWD_AND_FACE"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE_OR_PWD: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE_OR_PWD"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE_OR_PWD: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE_OR_PWD"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_FACE_AND_PWD: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_FACE_AND_PWD"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE_OR_PWD: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE_OR_PWD"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FACEIPCARDANDIDCARD_OR_CARD_OR_FACE: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FACEIPCARDANDIDCARD_OR_CARD_OR_FACE"); break; case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_OR_CARD_OR_FACE: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_OR_CARD_OR_FACE"); break; default: openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_UNKNOWN"); break; } return openMethods; } public String getShowInfo(String tag) { try { return bundle.getString(tag); }catch(Exception e) { return tag; } } public String getThermalCamera() { return getShowInfo("THERMAL_CAMERA"); } public String[] getMeterTypeList() { String[] meterTypes = {getShowInfo("SPOT"), getShowInfo("LINE"), getShowInfo("AREA")}; return meterTypes; } public String[] getTemperUnitList() { return new String[]{getShowInfo("CENTIGRADE"), getShowInfo("FAHRENHEIT")}; } public String[] getPeriodList() { return new String[] {getShowInfo("FIVE_MINUTES"), getShowInfo("TEN_MINUTES"), getShowInfo("FIFTEEN_MINUTES"), getShowInfo("THIRTY_MINUTES")}; } public String[] getTemperStatusList() { return new String[]{getShowInfo("IDLE"), getShowInfo("ACQUIRING")}; } public String getSearchingWait() { return bundle.getString("SEARCHING_WAITING"); } ///////////// Human Number Statistic /////////////// public String getHumanNumberStatistic() { return bundle.getString("HUMAN_NUMBER_STATISTIC_TITLE"); } public String getHumanNumberStatisticAttach() { return bundle.getString("HUMAN_NUMBER_STATISTIC_CONTROL"); } public String getHumanNumberStatisticEventTitle() { return bundle.getString("HUMAN_NUMBER_STATISTIC_EVENT_TITLE"); } public String getHumanNumberStatisticEventChannel() { return bundle.getString("HUMAN_NUMBER_STATISTIC_EVENT_CHANNEL"); } public String getHumanNumberStatisticEventTime() { return bundle.getString("HUMAN_NUMBER_STATISTIC_EVENT_TIME"); } public String getHumanNumberStatisticEventHourIn() { return bundle.getString("HUMAN_NUMBER_STATISTIC_EVENT_HOUR_IN"); } public String getHumanNumberStatisticEventHourOut() { return bundle.getString("HUMAN_NUMBER_STATISTIC_EVENT_HOUR_OUT"); } public String getHumanNumberStatisticEventTodayIn() { return bundle.getString("HUMAN_NUMBER_STATISTIC_EVENT_TODAY_IN"); } public String getHumanNumberStatisticEventTodayOut() { return bundle.getString("HUMAN_NUMBER_STATISTIC_EVENT_TODAY_OUT"); } public String getHumanNumberStatisticEventTotalIn() { return bundle.getString("HUMAN_NUMBER_STATISTIC_EVENT_TOTAL_IN"); } public String getHumanNumberStatisticEventTotalOut() { return bundle.getString("HUMAN_NUMBER_STATISTIC_EVENT_TOTAL_OUT"); } public String getHumanNumberStatisticEventClearOSD() { return bundle.getString("HUMAN_NUMBER_STATIC_EVENT_OSD_CLEAR"); } public String getVTOAlarmEventRoomNo(){ return bundle.getString("VTO_ALARM_EVENT_ROOM_NO"); } public String getVTOAlarmEventCardNo(){ return bundle.getString("VTO_ALARM_EVENT_CARD_NO"); } public String getVTOAlarmEventTime(){ return bundle.getString("VTO_ALARM_EVENT_TIME"); } public String getVTOAlarmEventOpenMethod(){ return bundle.getString("VTO_ALARM_EVENT_OPEN_METHOD"); } public String getVTOAlarmEventStatus(){ return bundle.getString("VTO_ALARM_EVENT_STATUS"); } public String getVTORealLoadRoomNO(){ return bundle.getString("VTO_REAL_LOAD_ROOM_NO"); } public String getVTORealLoadCardNo(){ return bundle.getString("VTO_REAL_LOAD_CARD_NO"); } public String getVTORealLoadTime(){ return bundle.getString("VTO_REAL_LOAD_TIME"); } public String getVTORealLoadEventInfo(){ return bundle.getString("VTO_REAL_LOAD_EVENT_INFO"); } public String getVTOOperateManagerTitle(){ return bundle.getString("VTO_OPERATE_MANAGER_TITLE"); } public String getInputRoomNo(){ return bundle.getString("INPUT_ROOM_NO"); } public String getRoomNoExceedLength(){ return bundle.getString("ROOM_NO_EXCEED_LENGTH"); } public String getVTOOperateManagerRecNo(){ return bundle.getString("VTO_OPERATE_MANAGER_REC_NO"); } public String getVTOOperateManagerRoomNo(){ return bundle.getString("VTO_OPERATE_MANAGER_ROOM_NO"); } public String getVTOOperateManagerCardNo(){ return bundle.getString("VTO_OPERATE_MANAGER_CARD_NO"); } public String getVTOOperateManagerFingerPrintData(){ return bundle.getString("VTO_OPERATE_MANAGER_FINGER_PRINT_DATA"); } public String getVTOOperateInfoTitle(){ return bundle.getString("VTO_OPERATE_INFO_TITLE"); } public String getVTOOperateCollectionFingerPrintTitle(){ return bundle.getString("VTO_OPERATE_COLLECTION_FINGER_PRINT_TITLE"); } public String getDoorOpen(){ return bundle.getString("DOOR_OPEN"); } public String getDoorClose(){ return bundle.getString("DOOR_CLOSE"); } public String getEventOperate(){ return bundle.getString("EVENT_OPERATE"); } public String getStartRealLoad(){ return bundle.getString("START_REAL_LOAD_PIC"); } public String getStopRealLoad(){ return bundle.getString("STOP_REAL_LOAD_PIC"); } public String getAlarmEvent(){ return bundle.getString("ALARM_EVENT"); } public String getRealLoadEvent(){ return bundle.getString("REAL_LOAD_EVENT"); } public String getCollectionResult(){ return bundle.getString("COLLECTION_RESULT"); } public String getNeedFingerPrint(){ return bundle.getString("NEED_FINGER_PRINT"); } public String getFaceInfo(){ return bundle.getString("FACE_INFO"); } public String getOpen(){ return bundle.getString("OPEN"); } ///////////////////////////////////点阵屏设置/////////////////////////////////////、 public static String getmatrixScreen() { // TODO Auto-generated method stub return bundle.getString("MATRIX_SCREEN"); } public String getPassingState(){ return bundle.getString("PASSING_STATE"); } public String getPassingCar(){ return bundle.getString("PASSING_CAR"); } public String getNoCar(){ return bundle.getString("NO_CAR"); } public String getInTime(){ return bundle.getString("IN_TIME"); } public String getOutTime(){ return bundle.getString("OUT_TIME"); } public String getPlateNumber(){ return bundle.getString("PLATE_NUMBER"); } public String getCarOwner(){ return bundle.getString("CAR_OWNER"); } public String getParkingTime(){ return bundle.getString("PARKING_TIME"); } public String getUserType(){ return bundle.getString("USER_TYPE"); } public String getMonthlyCardUser(){ return bundle.getString("MONTHLY_CARD_USER"); } public String getAnnualCardUser(){ return bundle.getString("ANNUAL_CARD_USER"); } public String getLongTermUser(){ return bundle.getString("LONG_TERM_USER"); } public String getTemporaryUser(){ return bundle.getString("TEMPORARY_USER"); } public String getParkingCharge(){ return bundle.getString("PARKING_CHARGE"); } public String getDaysDue(){ return bundle.getString("DAYS_DUE"); } public String getRemainingParkingSpaces(){ return bundle.getString("REMAINING_PARKING_SPACES"); } public String getVehiclesNotAllowedToPass(){ return bundle.getString("VEHICLES_NOT_ALLOWED_TO_PASS"); } public String getAllowedVehiclesToPass(){ return bundle.getString("ALLOWED_VEHICLES_TO_PASS"); } public String getSetUp(){ return bundle.getString("SET_UP"); } public String getSetUpSuccess(){ return bundle.getString("SUCCESSFULLY_ISSUED"); } public String getSetUpFailed(){ return bundle.getString("DELIVERY_FAILED"); } public String getCostomUserInfo(){ return bundle.getString("CUSTOM_USER_CLASS"); } public String getRemarksInfo(){ return bundle.getString("REMARKS_INFORMATION"); } public String getCostomInfo(){ return bundle.getString("CUSTOM_INFORMATION"); } public String getVTO() {return bundle.getString("VTO");} public String getSCADA() {return bundle.getString("SCADA");} public String getTrafficAllowList(){return bundle.getString("TRAFFIC_ALLOW_LIST");} public String getModifyCardFaceFailed(){ return bundle.getString("MODIFY_CARD_FACE_FAILED"); } public String getRemoveCardFaceFailed(){ return bundle.getString("REMOVE_CARD_FACE_FAILED"); } public String getDownLoadPicture(){ return bundle.getString("DOWNLOAD_PICTURE"); } public String getEnterPicturePath(){ return bundle.getString("ENTER_PICTURE_PATH"); } public String getLoading(){ return bundle.getString("LOADING"); } public String getEndSearch(){ return bundle.getString("END_SEARCH"); } public String getRemoteOpenDoor(){return bundle.getString("REMOTE_OPEN_DOOR");} public String getQueryCardExistFailed(){return bundle.getString("QUERY_CARD_EXIST_FAILED");} public String getFindCardExist(){return bundle.getString("CARD_EXIST");} public String getSCADADeviceList(){ return bundle.getString("SCADA_DEVICE_LIST"); } public String getSCADAPointList(){ return bundle.getString("SCADA_POINT_LIST"); } public String getSCADAAlarmAttachInfo(){ return bundle.getString("SCADA_ATTACH_ALARM"); } public String getSCADAAttachInfo(){ return bundle.getString("SCADA_ATTACH_INFO"); } public String getSCADAAttach(){ return bundle.getString("SCADA_ATTACH"); } public String getListBtn(){ return bundle.getString("BTN_LIST"); } public String getAllowlistOperation(){ return bundle.getString("ALLOWLIST_OPERATION"); } public String getSingleUpload(){ return bundle.getString("SINGLE_UPLOAD"); } public String getLicensePlateRun(){return bundle.getString("LICENSE_PLATE_RUN"); } public String getFuzzyQuery(){return bundle.getString("FUZZY_QUERY"); } public String getDeleteAll(){return bundle.getString("DELETE_ALL"); } public String getAuthorization(){return bundle.getString("AUTHORIZATION"); } public String getBatchUpload(){return bundle.getString("BATCH_UPLOAD"); } public String getBrowse(){return bundle.getString("BROWSE"); } public String getUpload(){return bundle.getString("UPLOAD"); } public String getQueryInformation(){return bundle.getString("QUERY_INFORMATION"); } public String getDialog(){return bundle.getString("DIALOG"); } public String getLicensePlateNumber(){return bundle.getString("LICENSE_PLATE_NUMBER"); } public String getModifyPanel(){return bundle.getString("MODIFY_PANEL"); } public String getSerialNumber(){return bundle.getString("SERIAL_NUMBER"); } public String getOpenModel(){return bundle.getString("OPEN_MODEL"); } public String getLicensePlateLengthTooLong(){return bundle.getString("LICENSE_PLATE_LENGTH_TOO_LONG"); } public String getNameTooLong(){return bundle.getString("NAME_TOO_LONG"); } public String getDataNumber(){return bundle.getString("DATA_NUMBER"); } public String getUnauthorization(){return bundle.getString("UNAUTHORIZATION"); } public String getAddSuccess(){return bundle.getString("ADD_SUCCESS"); } public String getAddFail(){return bundle.getString("ADD_FAIL"); } public String getDeleteSuccess(){return bundle.getString("DELETE_SUCCESS"); } public String getDeleteFail(){return bundle.getString("DELETE_FAIL"); } public String getModifySuccess(){return bundle.getString("MODIFY_SUCCESS"); } public String getModifyFail(){return bundle.getString("MODIFY_FAIL"); } public String getUploadSuccess(){return bundle.getString("UPLOAD_SUCCESS"); } public String getUploadFail(){return bundle.getString("UPLOAD_FAIL"); } public String getUploading(){return bundle.getString("UPLOADING"); } public String getSureUpload(){return bundle.getString("SURE_UPLOAD"); } public String getEnterQueryData(){return bundle.getString("ENTER_QUERY_DATA"); } public String getScreenNumber(){return bundle.getString("SCREEN_NUMBER");} public String getContain(){return bundle.getString("TEXT_CONTENT");} public String getContainType(){return bundle.getString("TEXT_CONTENT_TYPE");} public String getContainColor(){return bundle.getString("TEXT_CONTENT_COLOR");} public String getScrollType(){return bundle.getString("SCROLL_TYPE");} public String getScrollSpeed(){return bundle.getString("SCROLL_SPEED");} public String getGreen(){return bundle.getString("GREEN");} public String getRed(){return bundle.getString("RED");} public String getYellow(){return bundle.getString("YELLOW");} public String getWhite(){return bundle.getString("WHITE");} public String getOrdinary(){return bundle.getString("ORDINARY");} public String getQRCode(){return bundle.getString("QR_CODE");} public String getLocalTime(){return bundle.getString("LOCAL_TIME");} public String getResource(){return bundle.getString("RESOURCE");} public String getNoRolling(){return bundle.getString("NOT_ROLLING");} public String getScrollLeftAndRight(){return bundle.getString("SCROLL_LEFT_AND_RIGHT");} public String getScrollTopAndDown(){return bundle.getString("SCROLL_UP_AND_DOWN");} public String getNumericString(){return bundle.getString("NUMBER_STRING");} public String getVoiceText(){return bundle.getString("VOICE_TEXT");} public String getIssued(){return bundle.getString("ISSUED");} public String getPrompt(){return bundle.getString("PROMPT");} public String getDeviceName(){return bundle.getString("DEVICE_NAME");} public String getPointID(){return bundle.getString("POINT_ID");} public String getPointName(){return bundle.getString("POINT_NAME");} public String getIfValidSignalPoint(){return bundle.getString("IF_VALID_SIGNAL_POINT");} public String getAlarmDescribe(){return bundle.getString("ALARM_DESCRIBE");} public String getAlarmDelay(){return bundle.getString("ALARM_DELAY");} public String getAlarmLevel(){return bundle.getString("ALARM_LEVEL");} public String getAlarmTime(){return bundle.getString("ALARM_TIME");} public String getAlarmType(){return bundle.getString("ALARM_TYPE");} public String getCollectTime(){return bundle.getString("COLLECT_TIME");} public String getJing(){return bundle.getString("JING");} public String getJin(){return bundle.getString("JIN");} public String getJi(){return bundle.getString("JI");} } ard-work/src/main/java/com/ruoyi/device/dhsdk/common/SavePath.java
对比新文件 @@ -0,0 +1,76 @@ package com.ruoyi.device.dhsdk.common; import com.ruoyi.device.dhsdk.lib.ToolKits; import java.io.File; public class SavePath { private SavePath() {} private static class SavePathHolder { private static SavePath instance = new SavePath(); } public static SavePath getSavePath() { return SavePathHolder.instance; } String s_captureSavePath = "./Capture/" + ToolKits.getDay() + "/"; // 抓拍图片保存路径 String s_imageSavePath = "./Image/" + ToolKits.getDay() + "/"; // 图片保存路径 String s_recordFileSavePath = "./RecordFile/" + ToolKits.getDay() + "/"; // 录像保存路径 /* * 设置抓图保存路径 */ public String getSaveCapturePath() { File path1 = new File("./Capture/"); if (!path1.exists()) { path1.mkdir(); } File path2 = new File(s_captureSavePath); if (!path2.exists()) { path2.mkdir(); } String strFileName = path2.getAbsolutePath() + "/" + ToolKits.getDate() + ".jpg"; return strFileName; } /* * 设置智能交通图片保存路径 */ public String getSaveTrafficImagePath() { File path1 = new File("./Image/"); if (!path1.exists()) { path1.mkdir(); } File path = new File(s_imageSavePath); if (!path.exists()) { path.mkdir(); } return s_imageSavePath; } /* * 设置录像保存路径 */ public String getSaveRecordFilePath() { File path1 = new File("./RecordFile/"); if (!path1.exists()) { path1.mkdir(); } File path2 = new File(s_recordFileSavePath); if (!path2.exists()) { path2.mkdir(); } String SavedFileName = s_recordFileSavePath + ToolKits.getDate() + ".dav"; // 默认保存路径 return SavedFileName; } } ard-work/src/main/java/com/ruoyi/device/dhsdk/common/WindowCloseListener.java
对比新文件 @@ -0,0 +1,5 @@ package com.ruoyi.device.dhsdk.common; public interface WindowCloseListener { void windowClosing(); } ard-work/src/main/java/com/ruoyi/device/dhsdk/controller/DhSdkController.java
对比新文件 @@ -0,0 +1,78 @@ package com.ruoyi.device.dhsdk.controller; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.dhsdk.service.IDhClientService; import com.ruoyi.device.hiksdk.service.IHikClientService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.util.Map; /** * @Description: 大华sdk接口 * @ClassName: DhSdkController * @Author: 刘苏义 * @Date: 2023年10月14日10:34:58 **/ @Api(tags = "大华SDK接口") @Controller @RequestMapping("/dh") @Anonymous public class DhSdkController { @Resource private IDhClientService sdk; /** * @描述 初始加载大华库文件 * @参数 [] * @返回值 void * @创建人 刘苏义 * @创建时间 2023/1/17 16:13 * @修改人和其它信息 if (Platform.isLinux()) */ @PostConstruct public void initDHSDK() { //初始化加载sdk库文件 if (sdk.init()) { //登录所有相机 sdk.loginAll(); } } @ApiOperation(value = "云台控制", notes = "Code:1-左上 2-上 3-右上 4-左 5-巡航 6-右 7-左下 8-下 9-右下 10-焦距变大 11-焦距变小\n" + "12-焦点前调 13-焦点后调 14-光圈扩大 15-光圈缩小 ") @PostMapping("/pTZControl") @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.speed", "cmd.enable", "cmd.code"}) @Log(title = "云台控制", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult pTZControl(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); return AjaxResult.success(sdk.pTZControl(cmd)); } @ApiOperation("获取PTZ") @PostMapping("/getPTZ") @ApiOperationSupport(includeParameters = {"cmd.cameraId"}) @Log(title = "获取PTZ", businessType = BusinessType.CONTROL) public @ResponseBody AjaxResult getPTZ(@RequestBody CameraCmd cmd) { cmd.setOperator(SecurityUtils.getUserId()); Map<String, Object> ptzMap = sdk.getPtz(cmd); return AjaxResult.success("获取ptz", ptzMap); } } ard-work/src/main/java/com/ruoyi/device/dhsdk/module/ConfigModule.java
对比新文件 @@ -0,0 +1,36 @@ package com.ruoyi.device.dhsdk.module; import com.ruoyi.device.dhsdk.lib.NetSDKLib; import com.sun.jna.Structure; import com.sun.jna.ptr.IntByReference; /** * @Description: * @ClassName: ConfigModule * @Author: 刘苏义 * @Date: 2023年10月14日14:57:01 **/ public class ConfigModule { public static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE; public static boolean GetDevConfig(NetSDKLib.LLong hLoginHandle, int nType, Structure cmdObject) { boolean result = false; IntByReference error = new IntByReference(0); int nBufferLen = 2 * 1024 * 1024; netsdk.CLIENT_QueryDevState(hLoginHandle, nType, cmdObject.getPointer(), nBufferLen, error, 3000); return result; } /** * 查询设备状态 */ public static boolean queryDevState(NetSDKLib.LLong hLoginHandle, int nType, NetSDKLib.SdkStructure stuInfo) { IntByReference intRetLen = new IntByReference(); stuInfo.write(); if (!LoginModule.netsdk.CLIENT_QueryDevState(hLoginHandle, nType, stuInfo.getPointer(), stuInfo.size(), intRetLen, 3000)) { return false; } stuInfo.read(); return true; } } ard-work/src/main/java/com/ruoyi/device/dhsdk/module/LoginModule.java
对比新文件 @@ -0,0 +1,152 @@ package com.ruoyi.device.dhsdk.module; import com.ruoyi.device.dhsdk.lib.NetSDKLib; import com.ruoyi.device.dhsdk.lib.NetSDKLib.LLong; import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY; import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY; import com.ruoyi.device.dhsdk.lib.ToolKits; import com.sun.jna.Structure; import com.sun.jna.ptr.IntByReference; import lombok.extern.slf4j.Slf4j; import java.io.File; import static com.ruoyi.device.dhsdk.lib.ToolKits.getErrorCodePrint; /** * 登陆接口实现 * 主要有 :初始化、登陆、登出功能 */ @Slf4j(topic = "dhSdk") public class LoginModule { public static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE; public static NetSDKLib configsdk = NetSDKLib.CONFIG_INSTANCE; // 设备信息 public static NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex(); // 登陆句柄 public static LLong m_hLoginHandle = new LLong(0);// private static boolean bInit = false; private static boolean bLogopen = false; /** * \if ENGLISH_LANG * Init * \else * 初始化 * \endif */ public static boolean init(NetSDKLib.fDisConnect disConnect, NetSDKLib.fHaveReConnect haveReConnect) { bInit = netsdk.CLIENT_Init(disConnect, null); if (!bInit) { log.debug("Initialize SDK failed"); return false; } //打开日志,可选 //NetSDKLib.LOG_SET_PRINT_INFO setLog = new NetSDKLib.LOG_SET_PRINT_INFO(); //File path = new File("./sdklog/"); //if (!path.exists()) { // path.mkdir(); //} //String logPath = path.getAbsoluteFile().getParent() + "\\sdklog\\" + ToolKits.getDate() + ".log"; //setLog.nPrintStrategy = 0; //setLog.bSetFilePath = 1; //System.arraycopy(logPath.getBytes(), 0, setLog.szLogFilePath, 0, logPath.getBytes().length); //System.out.println(logPath); //setLog.bSetPrintStrategy = 1; //bLogopen = netsdk.CLIENT_LogOpen(setLog); // if (!bLogopen) { // System.err.println("Failed to open NetSDK log"); // } // 设置断线重连回调接口,设置过断线重连成功回调函数后,当设备出现断线情况,SDK内部会自动进行重连操作 // 此操作为可选操作,但建议用户进行设置 netsdk.CLIENT_SetAutoReconnect(haveReConnect, null); //设置登录超时时间和尝试次数,可选 int waitTime = 5000; //登录请求响应超时时间设置为5S int tryTimes = 1; //登录时尝试建立链接1次 netsdk.CLIENT_SetConnectTime(waitTime, tryTimes); // 设置更多网络参数,NET_PARAM的nWaittime,nConnectTryNum成员与CLIENT_SetConnectTime // 接口设置的登录设备超时时间和尝试次数意义相同,可选 NetSDKLib.NET_PARAM netParam = new NetSDKLib.NET_PARAM(); netParam.nConnectTime = 10000; // 登录时尝试建立链接的超时时间 netParam.nGetConnInfoTime = 3000; // 设置子连接的超时时间 netParam.nGetDevInfoTime = 3000;//获取设备信息超时时间,为0默认1000ms netsdk.CLIENT_SetNetworkParam(netParam); return true; } /** * \if ENGLISH_LANG * CleanUp * \else * 清除环境 * \endif */ public static void cleanup() { if (bLogopen) { netsdk.CLIENT_LogClose(); } if (bInit) { netsdk.CLIENT_Cleanup(); } } /** * \if ENGLISH_LANG * Login Device * \else * 登录设备 * \endif */ public static LLong login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword) { IntByReference nError = new IntByReference(0); //入参 NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY pstInParam = new NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY(); pstInParam.nPort = m_nPort; pstInParam.szIP = m_strIp.getBytes(); pstInParam.szPassword = m_strPassword.getBytes(); pstInParam.szUserName = m_strUser.getBytes(); //出参 NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY pstOutParam = new NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY(); pstOutParam.stuDeviceInfo = m_stDeviceInfo; LLong m_hLoginHandle = netsdk.CLIENT_LoginEx2(m_strIp, m_nPort, m_strUser, m_strPassword, 0, null, m_stDeviceInfo, nError); //m_hLoginHandle=netsdk.CLIENT_LoginWithHighLevelSecurity(pstInParam, pstOutParam); if (m_hLoginHandle.longValue() == 0) { log.debug("Login Device[%s] Port[%d]Failed. %s\n", m_strIp, m_nPort, getErrorCodePrint()); } else { log.debug("Login Success [ " + m_strIp + " ]"); } return m_hLoginHandle; //return m_hLoginHandle.longValue() == 0? false:true; } /** * \if ENGLISH_LANG * Logout Device * \else * 登出设备 * \endif */ public static boolean logout(LLong loginId) { if (loginId.longValue() == 0) { return false; } boolean bRet = netsdk.CLIENT_Logout(loginId); if (bRet) { loginId.setValue(0); } return bRet; } } ard-work/src/main/java/com/ruoyi/device/dhsdk/module/PtzControlModule.java
对比新文件 @@ -0,0 +1,206 @@ package com.ruoyi.device.dhsdk.module; import com.ruoyi.device.dhsdk.lib.NetSDKLib; /** * 云台控制接口实现 * 主要有 :八个方向控制、变倍、变焦、光圈功能 */ public class PtzControlModule { /** * 向上 */ public static boolean ptzControlUpStart(NetSDKLib.LLong lLoginID,int nChannelID, int lParam1, int lParam2) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL, lParam1, lParam2, 0, 0); } public static boolean ptzControlUpEnd(int nChannelID) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL, 0, 0, 0, 1); } /** * 向下 */ public static boolean ptzControlDownStart(int nChannelID, int lParam1, int lParam2) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_DOWN_CONTROL, lParam1, lParam2, 0, 0); } public static boolean ptzControlDownEnd(int nChannelID) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_DOWN_CONTROL, 0, 0, 0, 1); } /** * 向左 */ public static boolean ptzControlLeftStart(int nChannelID, int lParam1, int lParam2) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_LEFT_CONTROL, lParam1, lParam2, 0, 0); } public static boolean ptzControlLeftEnd(int nChannelID) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_LEFT_CONTROL, 0, 0, 0, 1); } /** * 向右 */ public static boolean ptzControlRightStart(int nChannelID, int lParam1,int lParam2) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_RIGHT_CONTROL, lParam1, lParam2, 0, 0); } public static boolean ptzControlRightEnd(int nChannelID) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_RIGHT_CONTROL, 0, 0, 0, 1); } /** * 向左上 */ public static boolean ptzControlLeftUpStart(int nChannelID, int lParam1, int lParam2) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTTOP, lParam1, lParam2, 0, 0); } public static boolean ptzControlLeftUpEnd(int nChannelID) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTTOP, 0, 0, 0, 1); } /** * 向右上 */ public static boolean ptzControlRightUpStart(int nChannelID, int lParam1, int lParam2) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTTOP, lParam1, lParam2, 0, 0); } public static boolean ptzControlRightUpEnd(int nChannelID) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTTOP, 0, 0, 0, 1); } /** * 向左下 */ public static boolean ptzControlLeftDownStart(int nChannelID, int lParam1, int lParam2) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTDOWN, lParam1, lParam2, 0, 0); } public static boolean ptzControlLeftDownEnd(int nChannelID) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTDOWN, 0, 0, 0, 1); } /** * 向右下 */ public static boolean ptzControlRightDownStart(int nChannelID, int lParam1, int lParam2) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTDOWN, lParam1, lParam2, 0, 0); } public static boolean ptzControlRightDownEnd(int nChannelID) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTDOWN, 0, 0, 0, 1); } /** * 变倍+ */ public static boolean ptzControlZoomAddStart(int nChannelID, int lParam2) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_ADD_CONTROL, 0, lParam2, 0, 0); } public static boolean ptzControlZoomAddEnd(int nChannelID) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_ADD_CONTROL, 0, 0, 0, 1); } /** * 变倍- */ public static boolean ptzControlZoomDecStart(int nChannelID, int lParam2) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_DEC_CONTROL, 0, lParam2, 0, 0); } public static boolean ptzControlZoomDecEnd(int nChannelID) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_DEC_CONTROL, 0, 0, 0, 1); } /** * 变焦+ */ public static boolean ptzControlFocusAddStart(int nChannelID, int lParam2) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_ADD_CONTROL, 0, lParam2, 0, 0); } public static boolean ptzControlFocusAddEnd(int nChannelID) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_ADD_CONTROL, 0, 0, 0, 1); } /** * 变焦- */ public static boolean ptzControlFocusDecStart(int nChannelID, int lParam2) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_DEC_CONTROL, 0, lParam2, 0, 0); } public static boolean ptzControlFocusDecEnd(int nChannelID) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_DEC_CONTROL, 0, 0, 0, 1); } /** * 光圈+ */ public static boolean ptzControlIrisAddStart(int nChannelID, int lParam2) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_ADD_CONTROL, 0, lParam2, 0, 0); } public static boolean ptzControlIrisAddEnd(int nChannelID) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_ADD_CONTROL, 0, 0, 0, 1); } /** * 光圈- */ public static boolean ptzControlIrisDecStart(int nChannelID, int lParam2) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_DEC_CONTROL, 0, lParam2, 0, 0); } public static boolean ptzControlIrisDecEnd(int nChannelID) { return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_DEC_CONTROL, 0, 0, 0, 1); } } ard-work/src/main/java/com/ruoyi/device/dhsdk/service/IDhClientService.java
对比新文件 @@ -0,0 +1,35 @@ package com.ruoyi.device.dhsdk.service; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.channel.domain.ArdChannel; import java.util.List; import java.util.Map; /** * @ClassName IDhSdkServer * @Description: * @Author 刘苏义 * @Date 2023/10/13 21:18 * @Version 1.0 */ public interface IDhClientService { //sdk初始化 Boolean init(); //登录 Boolean login(ArdCameras ardCamera); //登录所有相机 void loginAll(); //注销 Boolean logout(String cameraId); //在线状态 boolean isOnLine(CameraCmd cmd); //云台控制 boolean pTZControl(CameraCmd cmd); //ptz 三坐标 Map<String, Object> getPtz(CameraCmd cmd); } ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java
对比新文件 @@ -0,0 +1,255 @@ package com.ruoyi.device.dhsdk.service.impl; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.camera.service.IArdCamerasService; import com.ruoyi.device.channel.domain.ArdChannel; import com.ruoyi.device.channel.service.IArdChannelService; import com.ruoyi.device.dhsdk.common.Res; import com.ruoyi.device.dhsdk.lib.NetSDKLib; import com.ruoyi.device.dhsdk.lib.NetSDKLib.LLong; import com.ruoyi.device.dhsdk.lib.ToolKits; import com.ruoyi.device.dhsdk.lib.enumeration.EM_NEW_QUERY_SYSTEM_INFO; import com.ruoyi.device.dhsdk.module.ConfigModule; import com.ruoyi.device.dhsdk.module.LoginModule; import com.ruoyi.device.dhsdk.module.PtzControlModule; import com.ruoyi.device.dhsdk.service.IDhClientService; import com.ruoyi.device.hiksdk.common.GlobalVariable; import com.ruoyi.device.hiksdk.sdk.HCNetSDK; import com.sun.jna.Pointer; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.text.DecimalFormat; import java.util.*; import static com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_DEVSTATE_PTZ_LOCATION; import static com.ruoyi.device.dhsdk.lib.ToolKits.getErrorCodePrint; import static com.ruoyi.device.hiksdk.sdk.HCNetSDK.NET_DVR_CHECK_USER_STATUS; /** * @ClassName DhSdkServiceImpl * @Description: * @Author 刘苏义 * @Date 2023/10/13 21:19 * @Version 1.0 */ @Service @Slf4j(topic = "dhSdk") public class DhClientServiceImpl implements IDhClientService { @Resource private IArdCamerasService ardCamerasService; @Resource private IArdChannelService ardChannelService; private Vector<String> chnlist = new Vector<String>(); // 设备断线通知回调 private static DisConnect disConnect = new DisConnect(); // 网络连接恢复 private static HaveReConnect haveReConnect = new HaveReConnect(); @Override public void loginAll() { try { ArdCameras ardCamera = new ArdCameras(); ardCamera.setFactory("2");//获取大华相机 List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(ardCamera); for (ArdCameras camera : ardCameras) { Thread.sleep(500); //异步登录 login(camera); } } catch (Exception ex) { log.error("初始化登录相机异常:" + ex.getMessage()); } } @Override public Boolean init() { return LoginModule.init(disConnect, haveReConnect); // 打开工程,初始化 } @Override @Async public Boolean login(ArdCameras camera) { LLong loginId = LoginModule.login(camera.getIp(), camera.getPort(), camera.getUsername(), camera.getPassword()); if (loginId.longValue() > 0) { //log.debug(camera.getIp() + ":" + camera.getPort() + "登录成功"); if (GlobalVariable.loginMap.containsKey(camera.getId())) { GlobalVariable.loginMap.remove(camera.getId()); } //删除管理通道 ardChannelService.deleteArdChannelByDeviceId(camera.getId()); camera.setState("1"); camera.setChanNum(LoginModule.m_stDeviceInfo.byChanNum); camera.setStartDChan(1); camera.setLoginId((int) loginId.longValue()); ardCamerasService.updateArdCameras(camera); GlobalVariable.loginMap.put(camera.getId(), loginId); //获取最新通道 for (int i = 1; i < LoginModule.m_stDeviceInfo.byChanNum + 1; i++) { chnlist.add(Res.string().getChannel() + " " + String.valueOf(i)); ArdChannel channel = new ArdChannel(); channel.setDeviceId(camera.getId()); channel.setName("通道" + i); channel.setId(IdUtils.simpleUUID()); channel.setChanNo(i); ardChannelService.insertArdChannel(channel); } } else { //log.debug(camera.getIp() + ":" + camera.getPort() + "登录失败"); camera.setChanNum(0); camera.setLoginId(-1); camera.setState("0"); ardCamerasService.updateArdCameras(camera); return false; } return true; } @Override public Boolean logout(String cameraId) { if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); return LoginModule.logout(loginId); } @Override public boolean isOnLine(CameraCmd cmd) { try { String cameraId = cmd.getCameraId(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); } catch (Exception ex) { log.error("检测在线异常:" + ex.getMessage()); return false; } return false; } @Override public boolean pTZControl(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); Integer chanNo = cmd.getChanNo(); Integer speed = cmd.getSpeed(); Integer code = cmd.getCode(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); int dwStop; if (enable) { dwStop = 0;//开启 } else { dwStop = 1;//关闭 } int dwPTZCommand = -1; switch (code) { /*方向*/ case 1: dwPTZCommand = NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTTOP; break; case 2: dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL; break; case 3: dwPTZCommand = NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTTOP; break; case 4: dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_LEFT_CONTROL; break; case 5: dwPTZCommand = HCNetSDK.RUN_SEQ; break; case 6: dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_RIGHT_CONTROL; break; case 7: dwPTZCommand = NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTDOWN; break; case 8: dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_DOWN_CONTROL; break; case 9: dwPTZCommand = NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTDOWN; break; /*焦距*/ case 10: dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_ADD_CONTROL; break; case 11: dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_DEC_CONTROL; break; /*焦点*/ case 12: dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_ADD_CONTROL; break; case 13: dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_DEC_CONTROL; break; /*光圈*/ case 14: dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_ADD_CONTROL; break; case 15: dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_DEC_CONTROL; break; } boolean bool = LoginModule.netsdk.CLIENT_DHPTZControlEx(loginId, chanNo - 1, dwPTZCommand, speed, speed, 0, dwStop); if (!bool) { log.error("控制失败,请稍后重试" + getErrorCodePrint()); } return bool; } @Override public Map<String, Object> getPtz(CameraCmd cmd) { Map<String, Object> ptzMap = new HashMap<>(); String cameraId = cmd.getCameraId(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return null; } LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId); NetSDKLib.NET_PTZ_LOCATION_INFO dh_ptz_location_info = new NetSDKLib.NET_PTZ_LOCATION_INFO(); boolean b = ConfigModule.queryDevState(loginId, NET_DEVSTATE_PTZ_LOCATION, dh_ptz_location_info); if (b) { DecimalFormat df = new DecimalFormat("0.0");//设置保留位数 String nPTZPan = df.format((float)dh_ptz_location_info.nPTZPan / 10); String nPTZTilt = df.format((float)dh_ptz_location_info.nPTZTilt/10); String nPTZZoom = df.format((float)dh_ptz_location_info.nPTZZoom); ptzMap.put("p", nPTZPan); ptzMap.put("t", nPTZTilt); ptzMap.put("z", nPTZZoom); } return ptzMap; } // 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数 private static class DisConnect implements NetSDKLib.fDisConnect { public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) { System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort); } } // 网络连接恢复,设备重连成功回调 // 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数 private static class HaveReConnect implements NetSDKLib.fHaveReConnect { @Override public void invoke(LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser) { System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort); } } } ard-work/src/main/java/com/ruoyi/device/hiksdk/common/GlobalVariable.java
@@ -14,7 +14,7 @@ @Data public class GlobalVariable { //保存相机登录信息 public static Map<String, Integer> loginMap = new HashMap<>(); public static Map<String, Object> loginMap = new HashMap<>(); //相机预览字典 public static Map<String, Integer> previewMap = new HashMap<>(); //线程字典 ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java
@@ -8,6 +8,7 @@ import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.camera.service.IArdCamerasService; import com.ruoyi.device.dhsdk.service.IDhClientService; import com.ruoyi.device.hiksdk.service.IHikClientService; import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.core.domain.AjaxResult; @@ -37,6 +38,8 @@ @Resource private IHikClientService sdk; @Resource private IDhClientService ClientService; @Resource private IArdCamerasService ardCamerasService; /** ard-work/src/main/java/com/ruoyi/device/hiksdk/sdk/LoginResultCallBack.java
@@ -39,7 +39,6 @@ @Override public int invoke(int lUserID, int dwResult, HCNetSDK.NET_DVR_DEVICEINFO_V30 lpDeviceinfo, Pointer pUser) { MediaClient mediaClient=SpringUtils.getBean(MediaClient.class); IVtduService vtduService = SpringUtils.getBean(IVtduService.class); IArdChannelService ardChannelService = SpringUtils.getBean(IArdChannelService.class); IHikClientService hikClientService = SpringUtils.getBean(IHikClientService.class); @@ -103,4 +102,4 @@ ardCamerasService.updateArdCameras(camera); return 1; } } } ard-work/src/main/java/com/ruoyi/device/hiksdk/service/IHikClientService.java
@@ -27,7 +27,7 @@ void loginAll(); //注销 boolean loginOut(String cameraId); boolean logout(String cameraId); //在线状态 boolean isOnLine(CameraCmd cmd); ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
@@ -65,7 +65,7 @@ try { log.debug("开始加载sdk库文件路径"); if (Platform.isWindows()) { String WIN_PATH = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "HCNetSDK.dll"; String WIN_PATH = System.getProperty("user.dir") + File.separator + "lib\\hikDll\\HCNetSDK.dll"; log.debug("当前Windows平台的sdk库路径:" + WIN_PATH); hCNetSDK = (HCNetSDK) Native.loadLibrary(WIN_PATH, HCNetSDK.class); } else { @@ -277,7 +277,9 @@ public void loginAll() { try { log.debug("加载lib完成!"); List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(new ArdCameras()); ArdCameras ardCamera = new ArdCameras(); ardCamera.setFactory("1"); List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(ardCamera); for (ArdCameras camera : ardCameras) { Thread.sleep(500); //异步登录 @@ -297,11 +299,11 @@ * @修改人和其它信息 */ @Override public boolean loginOut(String cameraId) { public boolean logout(String cameraId) { if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); boolean b = hCNetSDK.NET_DVR_Logout(userId); if (b) { GlobalVariable.loginMap.remove(cameraId); @@ -321,7 +323,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); return hCNetSDK.NET_DVR_RemoteControl(userId, NET_DVR_CHECK_USER_STATUS, null, 0); } catch (Exception ex) { log.error("检测在线异常:" + ex.getMessage()); @@ -350,7 +352,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); int dwStop; if (enable) { dwStop = 0;//开启 @@ -436,7 +438,7 @@ return false; } // 获取参数 Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); HCNetSDK.NET_DVR_STD_CONFIG struStdCfg = new HCNetSDK.NET_DVR_STD_CONFIG(); HCNetSDK.NET_DVR_GIS_INFO struGisInfo = new HCNetSDK.NET_DVR_GIS_INFO(); struGisInfo.struPtzPosEx.dwFocus = dwFocusPos; @@ -470,7 +472,7 @@ return new HashMap<>(); } // 获取参数 Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); HCNetSDK.NET_DVR_STD_CONFIG struStdCfg = new HCNetSDK.NET_DVR_STD_CONFIG(); HCNetSDK.NET_DVR_GIS_INFO struGisInfo = new HCNetSDK.NET_DVR_GIS_INFO(); struStdCfg.read(); @@ -507,7 +509,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, SET_PRESET, PresetIndex); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); @@ -530,7 +532,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, GOTO_PRESET, PresetIndex); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); @@ -554,7 +556,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return null; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); Map<String, String> map = new HashMap<>(); NET_DVR_COMPRESSIONCFG_V30 compressioncfg = new NET_DVR_COMPRESSIONCFG_V30(); @@ -794,7 +796,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return null; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS(); Pointer pioint = m_ptzPosCurrent.getPointer(); @@ -846,7 +848,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS(); m_ptzPosCurrent.wAction = 1; try { @@ -878,7 +880,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS(); m_ptzPosCurrent.wAction = 1; try { @@ -965,7 +967,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return -1; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); NET_DVR_PTZ_LOCKCFG netDvrPtzLockcfg = new NET_DVR_PTZ_LOCKCFG(); Pointer point = netDvrPtzLockcfg.getPointer(); IntByReference ibrBytesReturned = new IntByReference(0); @@ -997,7 +999,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); NET_DVR_INITIALPOSITIONCTRL initialpositionctrl = new NET_DVR_INITIALPOSITIONCTRL(); initialpositionctrl.dwSize = initialpositionctrl.size(); @@ -1029,7 +1031,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return new HashMap<>(); } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); NET_DVR_PTZSCOPE m_ptzPosCurrent = new NET_DVR_PTZSCOPE(); Pointer point = m_ptzPosCurrent.getPointer(); IntByReference ibrBytesReturned = new IntByReference(0); @@ -1078,7 +1080,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); NET_DVR_CAMERAPARAMCFG_EX struCameraParam = new NET_DVR_CAMERAPARAMCFG_EX(); Pointer point = struCameraParam.getPointer(); IntByReference ibrBytesReturned = new IntByReference(0); @@ -1124,7 +1126,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); NET_DVR_CAMERAPARAMCFG_EX struDayNigh = new NET_DVR_CAMERAPARAMCFG_EX(); Pointer point = struDayNigh.getPointer(); IntByReference ibrBytesReturned = new IntByReference(0); @@ -1172,7 +1174,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); NET_DVR_FOCUSMODE_CFG struFocusMode = new NET_DVR_FOCUSMODE_CFG(); Pointer point = struFocusMode.getPointer(); IntByReference ibrBytesReturned = new IntByReference(0); @@ -1215,7 +1217,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return ""; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); NET_DVR_FOCUSMODE_CFG struFocusMode = new NET_DVR_FOCUSMODE_CFG(); Pointer point = struFocusMode.getPointer(); IntByReference ibrBytesReturned = new IntByReference(0); @@ -1245,7 +1247,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); int dwStop; if (enable) { dwStop = 0;//开启 @@ -1278,7 +1280,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); NET_DVR_DEVSERVER_CFG struDeicing = new NET_DVR_DEVSERVER_CFG(); Pointer point = struDeicing.getPointer(); IntByReference ibrBytesReturned = new IntByReference(0); @@ -1315,7 +1317,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return ""; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); NET_DVR_WORKSTATE_V30 devwork = new NET_DVR_WORKSTATE_V30(); if (!hCNetSDK.NET_DVR_GetDVRWorkState_V30(userId, devwork)) { // 返回Boolean值,判断是否获取设备能力 @@ -1358,7 +1360,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return ""; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); //图片信息 NET_DVR_JPEGPARA jpeg = new NET_DVR_JPEGPARA(); //设置图片分辨率 @@ -1422,7 +1424,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return ""; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); //强制I帧结构体对象 HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME(); //新建结构体对象 netDvrIFrame.read(); @@ -1483,7 +1485,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); //强制I帧结构体对象 HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME(); //新建结构体对象 netDvrIFrame.read(); @@ -1538,7 +1540,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return ""; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); //region 强制I帧 HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME(); //新建结构体对象 netDvrIFrame.read(); @@ -1591,7 +1593,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return; } Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); //强制I帧结构体对象 HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME(); //新建结构体对象 netDvrIFrame.read(); @@ -1676,7 +1678,7 @@ return new HashMap<>(); } // 获取参数 Integer userId = GlobalVariable.loginMap.get(cameraId); Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); HCNetSDK.NET_DVR_STD_CONFIG struStdCfg = new HCNetSDK.NET_DVR_STD_CONFIG(); HCNetSDK.NET_DVR_GIS_INFO struGisInfo = new HCNetSDK.NET_DVR_GIS_INFO(); struStdCfg.read(); ard-work/src/main/resources/dynamic-lib-load.xml
对比新文件 @@ -0,0 +1,41 @@ <?xml version="1.0" encoding="UTF-8" ?> <dynamic-lib> <win64> <lib>avnetsdk</lib> <lib>dhconfigsdk</lib> <lib>dhnetsdk</lib> <lib>dhplay</lib> <lib>RenderEngine</lib> <lib>ImageAlg</lib> <lib>Infra</lib> <lib>IvsDrawer</lib> <lib>StreamConvertor</lib> </win64> <win32> <lib>avnetsdk</lib> <lib>dhconfigsdk</lib> <lib>dhnetsdk</lib> <lib>dhplay</lib> <lib>RenderEngine</lib> <lib>Infra</lib> <lib>ImageAlg</lib> <lib>StreamConvertor</lib> </win32> <linux64> <lib>avnetsdk</lib> <lib>dhnetsdk</lib> <lib>dhconfigsdk</lib> <lib>StreamConvertor</lib> </linux64> <linux32> <lib>avnetsdk</lib> <lib>dhconfigsdk</lib> <lib>dhnetsdk</lib> </linux32> <mac64> <lib>avnetsdk</lib> <lib>dhnetsdk</lib> <lib>dhconfigsdk</lib> <lib>StreamConvertor</lib> </mac64> </dynamic-lib> ard-work/src/main/resources/mapper/device/ArdCamerasMapper.xml
@@ -13,6 +13,7 @@ <result property="username" column="username"/> <result property="password" column="password"/> <result property="gdtype" column="gdtype"/> <result property="factory" column="factory"/> <result property="chanNum" column="channel"/> <result property="longitude" column="longitude"/> <result property="latitude" column="latitude"/> @@ -44,6 +45,7 @@ c.username, c.password, c.gdtype, c.factory, c.channel, c.longitude, c.latitude, @@ -80,6 +82,7 @@ <if test="username != null and username != ''">and c.username like '%'||#{username}||'%'</if> <if test="password != null and password != ''">and c.password = #{password}</if> <if test="gdtype != null and gdtype != ''">and c.gdtype = #{gdtype}</if> <if test="factory != null and factory != ''">and c.factory = #{factory}</if> <if test="chanNum != null ">and c.channel = #{chanNum}</if> <if test="longitude != null ">and c.longitude = #{longitude}</if> <if test="latitude != null ">and c.latitude = #{latitude}</if> @@ -113,6 +116,7 @@ <if test="username != null and username != ''">and c.username like '%'||#{username}||'%'</if> <if test="password != null and password != ''">and c.password = #{password}</if> <if test="gdtype != null and gdtype != ''">and c.gdtype = #{gdtype}</if> <if test="factory != null and factory != ''">and c.factory = #{factory}</if> <if test="chanNum != null ">and c.channel = #{chanNum}</if> <if test="longitude != null ">and c.longitude = #{longitude}</if> <if test="latitude != null ">and c.latitude = #{latitude}</if> @@ -150,6 +154,7 @@ <if test="username != null">username,</if> <if test="password != null">password,</if> <if test="gdtype != null">gdtype,</if> <if test="factory != null">factory,</if> <if test="chanNum != null">channel,</if> <if test="longitude != null">longitude,</if> <if test="latitude != null">latitude,</if> @@ -181,6 +186,7 @@ <if test="username != null">#{username},</if> <if test="password != null">#{password},</if> <if test="gdtype != null">#{gdtype},</if> <if test="factory != null">#{factory},</if> <if test="chanNum != null">#{chanNum},</if> <if test="longitude != null">#{longitude},</if> <if test="latitude != null">#{latitude},</if> @@ -215,6 +221,7 @@ <if test="username != null">username = #{username},</if> <if test="password != null">password = #{password},</if> <if test="gdtype != null">gdtype = #{gdtype},</if> <if test="factory != null">factory = #{factory},</if> <if test="chanNum != null">channel = #{chanNum},</if> <if test="longitude != null">longitude = #{longitude},</if> <if test="latitude != null">latitude = #{latitude},</if> ard-work/src/main/resources/resources_en_US.properties
对比新文件 @@ -0,0 +1,1071 @@ # FunctionList FUNCTIONLIST=FunctionList REALPLAY=RealPlay CAPTURE_PICTURE=Capture Picture MULTIREALPLAY=MultiRealPlay DOWNLOAD_RECORD=Download Record ITS_EVENT=TrafficEvent TALK=Talk DEVICESEARCH_DEVICEINIT=DeviceSearchAndInit PTZ=PTZ Control FACERECOGNITION=FaceRecognition ALARM_LISTEN=Alarm Listen DEVICE_CONTROL=Device Control AUTOREGISTER=AutoRegister REMOTE_OPEN_DOOR=Remote Open Door ONLINE=Online # Login Info DEVICE_IP=Device IP DEVICE_PORT=Port USERNAME=UserName PASSWORD=Password IP=IP LOGIN=Login LOGOUT=Logout LOGIN_SUCCEED=Login Succeed LOGIN_FAILED=Login Failed DISCONNECT=Device disconnect DISCONNECT_RECONNECTING=Device disconnect, reconnecting PROMPT_MESSAGE=Prompt Message ERROR_MESSAGE=Error Message SUCCEED=Succeed FAILED=Failed PLEASE_INPUT_DEVICE_IP=Please input device IP PLEASE_INPUT_DEVICE_PORT=Please input device port PLEASE_INPUT_DEVICE_USERNAME=Please input userName PLEASE_INPUT_DEVICE_PASSWORD=Please input password PLEASE_INPUT_CONFIRM_PASSWORD=Please input confirm password # Error Info NET_NOERROR=No error NET_ERROR=Unknown error NET_SYSTEM_ERROR=System error NET_NETWORK_ERROR=Protocol error it may result from network timeout NET_DEV_VER_NOMATCH=Device protocol does not match NET_INVALID_HANDLE=Handle is invalid NET_OPEN_CHANNEL_ERROR=Failed to open channel NET_CLOSE_CHANNEL_ERROR=Failed to close channel NET_ILLEGAL_PARAM=User parameter is illegal NET_SDK_INIT_ERROR=SDK initialization error NET_SDK_UNINIT_ERROR=SDK clear error NET_RENDER_OPEN_ERROR=Error occurs when apply for render resources NET_DEC_OPEN_ERROR=Error occurs when opening the decoder library NET_DEC_CLOSE_ERROR=Error occurs when closing the decoder library NET_MULTIPLAY_NOCHANNEL=The detected channel number is 0 in multiple-channel preview NET_TALK_INIT_ERROR=Failed to initialize record library NET_TALK_NOT_INIT=The record library has not been initialized NET_TALK_SENDDATA_ERROR=Error occurs when sending out audio data NET_REAL_ALREADY_SAVING=The real-time has been protected NET_NOT_SAVING=The real-time data has not been save NET_OPEN_FILE_ERROR=Error occurs when opening the file NET_PTZ_SET_TIMER_ERROR=Failed to enable PTZ to control timer NET_RETURN_DATA_ERROR=Error occurs when verify returned data NET_INSUFFICIENT_BUFFER=There is no sufficient buffer NET_NOT_SUPPORTED=The current SDK does not support this funcntion NET_NO_RECORD_FOUND=There is no searched result NET_NOT_AUTHORIZED=You have no operation right NET_NOT_NOW=Can not operate right now NET_NO_TALK_CHANNEL=There is no audio talk channel NET_NO_AUDIO=There is no audio NET_NO_INIT=The network SDK has not been initialized NET_DOWNLOAD_END=The download completed NET_EMPTY_LIST=There is no searched result NET_ERROR_GETCFG_SYSATTR=Failed to get system property setup NET_ERROR_GETCFG_SERIAL=Failed to get SN NET_ERROR_GETCFG_GENERAL=Failed to get general property NET_ERROR_GETCFG_DSPCAP=Failed to get DSP capacity description NET_ERROR_GETCFG_NETCFG=Failed to get network channel setup NET_ERROR_GETCFG_CHANNAME=Failed to get channel name NET_ERROR_GETCFG_VIDEO=Failed to get video property NET_ERROR_GETCFG_RECORD=Failed to get record setup NET_ERROR_GETCFG_PRONAME=Failed to get decoder protocol name NET_ERROR_GETCFG_FUNCNAME=Failed to get 232 COM function name NET_ERROR_GETCFG_485DECODER=Failed to get decoder property NET_ERROR_GETCFG_232COM=Failed to get 232 COM setup NET_ERROR_GETCFG_ALARMIN=Failed to get external alarm input setup NET_ERROR_GETCFG_ALARMDET=Failed to get motion detection alarm NET_ERROR_GETCFG_SYSTIME=Failed to get device time NET_ERROR_GETCFG_PREVIEW=Failed to get preview parameter NET_ERROR_GETCFG_AUTOMT=Failed to get audio maintenance setup NET_ERROR_GETCFG_VIDEOMTRX=Failed to get video matrix setup NET_ERROR_GETCFG_COVER=Failed to get privacy mask zone setup NET_ERROR_GETCFG_WATERMAKE=Failed to get video watermark setup NET_ERROR_GETCFG_MULTICAST=Failed to get config, omulticast port by channel NET_ERROR_SETCFG_GENERAL=Failed to modify general property NET_ERROR_SETCFG_NETCFG=Failed to modify channel setup NET_ERROR_SETCFG_CHANNAME=Failed to modify channel name NET_ERROR_SETCFG_VIDEO=Failed to modify video channel NET_ERROR_SETCFG_RECORD=Failed to modify record setup NET_ERROR_SETCFG_485DECODER=Failed to modify decoder property NET_ERROR_SETCFG_232COM=Failed to modify 232 COM setup NET_ERROR_SETCFG_ALARMIN=Failed to modify external input alarm setup NET_ERROR_SETCFG_ALARMDET=Failed to modify motion detection alarm setup NET_ERROR_SETCFG_SYSTIME=Failed to modify device time NET_ERROR_SETCFG_PREVIEW=Failed to modify preview parameter NET_ERROR_SETCFG_AUTOMT=Failed to modify auto maintenance setup NET_ERROR_SETCFG_VIDEOMTRX=Failed to modify video matrix setup NET_ERROR_SETCFG_COVER=Failed to modify privacy mask zone NET_ERROR_SETCFG_WATERMAKE=Failed to modify video watermark setup NET_ERROR_SETCFG_WLAN=Failed to modify wireless network information NET_ERROR_SETCFG_WLANDEV=Failed to select wireless network device NET_ERROR_SETCFG_REGISTER=Failed to modify the actively registration parameter setup NET_ERROR_SETCFG_CAMERA=Failed to modify camera property NET_ERROR_SETCFG_INFRARED=Failed to modify IR alarm setup NET_ERROR_SETCFG_SOUNDALARM=Failed to modify audio alarm setup NET_ERROR_SETCFG_STORAGE=Failed to modify storage position setup NET_AUDIOENCODE_NOTINIT=The audio encode port has not been successfully initialized NET_DATA_TOOLONGH=The data are too long NET_UNSUPPORTED=The device does not support current operation NET_DEVICE_BUSY=Device resources is not sufficient NET_SERVER_STARTED=The server has boot up NET_SERVER_STOPPED=The server has not fully boot up NET_LISTER_INCORRECT_SERIAL=Input serial number is not correct NET_QUERY_DISKINFO_FAILED=Failed to get HDD information NET_ERROR_GETCFG_SESSION=Failed to get connect session information NET_USER_FLASEPWD_TRYTIME=The password you typed is incorrect You have exceeded the maximum number of retries NET_LOGIN_ERROR_PASSWORD=Password is not correct NET_LOGIN_ERROR_USER=The account does not exist NET_LOGIN_ERROR_TIMEOUT=Time out for log in returned value NET_LOGIN_ERROR_RELOGGIN=The account has logged in NET_LOGIN_ERROR_LOCKED=The account has been locked NET_LOGIN_ERROR_BLACKLIST=The account has been in the block list NET_LOGIN_ERROR_BUSY=Resources are not sufficient System is busy now NET_LOGIN_ERROR_CONNECT=Time out Please check network and try again NET_LOGIN_ERROR_NETWORK=Network connection failed NET_LOGIN_ERROR_SUBCONNECT=Successfully logged in the device but can not create video channel Please check network connection NET_LOGIN_ERROR_MAXCONNECT=Exceed the max connect number NET_LOGIN_ERROR_PROTOCOL3_ONLY=Only support 3 protocol NET_LOGIN_ERROR_UKEY_LOST=There is no USB or USB info error NET_LOGIN_ERROR_NO_AUTHORIZED=Client-end IP address has no right to login NET_LOGIN_ERROR_USER_OR_PASSOWRD=user or password error NET_LOGIN_ERROR_DEVICE_NOT_INIT=cannot login because the device has not been init,please init the device and then login NET_RENDER_SOUND_ON_ERROR=Error occurs when Render library open audio NET_RENDER_SOUND_OFF_ERROR=Error occurs when Render library close audio NET_RENDER_SET_VOLUME_ERROR=Error occurs when Render library control volume NET_RENDER_ADJUST_ERROR=Error occurs when Render library set video parameter NET_RENDER_PAUSE_ERROR=Error occurs when Render library pause play NET_RENDER_SNAP_ERROR=Render library snapshot error NET_RENDER_STEP_ERROR=Render library stepper error NET_RENDER_FRAMERATE_ERROR=Error occurs when Render library set frame rate NET_RENDER_DISPLAYREGION_ERROR=Error occurs when Render lib setting show region NET_RENDER_GETOSDTIME_ERROR=An error occurred when Render library getting current play time NET_GROUP_EXIST=Group name has been existed NET_GROUP_NOEXIST=The group name does not exist NET_GROUP_RIGHTOVER=The group right exceeds the right list! NET_GROUP_HAVEUSER=The group can not be removed since there is user in it! NET_GROUP_RIGHTUSE=The user has used one of the group right It can not be removed NET_GROUP_SAMENAME=New group name has been existed NET_USER_EXIST=The user name has been existed NET_USER_NOEXIST=The account does not exist NET_USER_RIGHTOVER=User right exceeds the group right NET_USER_PWD=Reserved account It does not allow to be modified NET_USER_FLASEPWD=password is not correct NET_USER_NOMATCHING=Password is invalid NET_USER_INUSE=account in use NET_ERROR_GETCFG_ETHERNET=Failed to get network card setup NET_ERROR_GETCFG_WLAN=Failed to get wireless network information NET_ERROR_GETCFG_WLANDEV=Failed to get wireless network device NET_ERROR_GETCFG_REGISTER=Failed to get actively registration parameter NET_ERROR_GETCFG_CAMERA=Failed to get camera property NET_ERROR_GETCFG_INFRARED=Failed to get IR alarm setup NET_ERROR_GETCFG_SOUNDALARM=Failed to get audio alarm setup NET_ERROR_GETCFG_STORAGE=Failed to get storage position NET_ERROR_GETCFG_MAIL=Failed to get mail setup NET_CONFIG_DEVBUSY=Can not set right now NET_CONFIG_DATAILLEGAL=The configuration setup data are illegal NET_ERROR_GETCFG_DST=Failed to get DST setup NET_ERROR_SETCFG_DST=Failed to set DST NET_ERROR_GETCFG_VIDEO_OSD=Failed to get video OSD setup NET_ERROR_SETCFG_VIDEO_OSD=Failed to set video OSD NET_ERROR_GETCFG_GPRSCDMA=Failed to get CDMA\GPRS configuration NET_ERROR_SETCFG_GPRSCDMA=Failed to set CDMA\GPRS configuration NET_ERROR_GETCFG_IPFILTER= Failed to get IP Filter configuration NET_ERROR_SETCFG_IPFILTER=Failed to set IP Filter configuration NET_ERROR_GETCFG_TALKENCODE=Failed to get Talk Encode configuration NET_ERROR_SETCFG_TALKENCODE=Failed to set Talk Encode configuration NET_ERROR_GETCFG_RECORDLEN=Failed to get The length of the video package configuration NET_ERROR_SETCFG_RECORDLEN=Failed to set The length of the video package configuration NET_DONT_SUPPORT_SUBAREA=Not support Network hard disk partition NET_ERROR_GET_AUTOREGSERVER=Failed to get the register server information NET_ERROR_CONTROL_AUTOREGISTER=Failed to control actively registration NET_ERROR_DISCONNECT_AUTOREGISTER=Failed to disconnect actively registration NET_ERROR_GETCFG_MMS=Failed to get mms configuration NET_ERROR_SETCFG_MMS=Failed to set mms configuration NET_ERROR_GETCFG_SMSACTIVATION=Failed to get SMS configuration NET_ERROR_SETCFG_SMSACTIVATION=Failed to set SMS configuration NET_ERROR_GETCFG_DIALINACTIVATION=Failed to get activation of a wireless connection NET_ERROR_SETCFG_DIALINACTIVATION=Failed to set activation of a wireless connection NET_ERROR_GETCFG_VIDEOOUT=Failed to get the parameter of video output NET_ERROR_SETCFG_VIDEOOUT=Failed to set the configuration of video output NET_ERROR_GETCFG_OSDENABLE=Failed to get osd overlay enabling NET_ERROR_SETCFG_OSDENABLE=Failed to set OSD overlay enabling NET_ERROR_SETCFG_ENCODERINFO=Failed to set digital input configuration of front encoders NET_ERROR_GETCFG_TVADJUST=Failed to get TV adjust configuration NET_ERROR_SETCFG_TVADJUST=Failed to set TV adjust configuration NET_ERROR_CONNECT_FAILED=Failed to request to establish a connection NET_ERROR_SETCFG_BURNFILE=Failed to request to upload burn files NET_ERROR_SNIFFER_GETCFG=Failed to get capture configuration information NET_ERROR_SNIFFER_SETCFG=Failed to set capture configuration information NET_ERROR_DOWNLOADRATE_GETCFG=Failed to get download restrictions information NET_ERROR_DOWNLOADRATE_SETCFG=Failed to set download restrictions information NET_ERROR_SEARCH_TRANSCOM=Failed to query serial port parameters NET_ERROR_GETCFG_POINT=Failed to get the preset info NET_ERROR_SETCFG_POINT=Failed to set the preset info NET_SDK_LOGOUT_ERROR=SDK log out the device abnormally NET_ERROR_GET_VEHICLE_CFG=Failed to get vehicle configuration NET_ERROR_SET_VEHICLE_CFG=Failed to set vehicle configuration NET_ERROR_GET_ATM_OVERLAY_CFG=Failed to get ATM overlay configuration NET_ERROR_SET_ATM_OVERLAY_CFG=Failed to set ATM overlay configuration NET_ERROR_GET_ATM_OVERLAY_ABILITY=Failed to get ATM overlay ability NET_ERROR_GET_DECODER_TOUR_CFG=Failed to get decoder tour configuration NET_ERROR_SET_DECODER_TOUR_CFG=Failed to set decoder tour configuration NET_ERROR_CTRL_DECODER_TOUR=Failed to control decoder tour NET_GROUP_OVERSUPPORTNUM=Beyond the device supports for the largest number of user groups NET_USER_OVERSUPPORTNUM=Beyond the device supports for the largest number of users NET_ERROR_GET_SIP_CFG=Failed to get SIP configuration NET_ERROR_SET_SIP_CFG=Failed to set SIP configuration NET_ERROR_GET_SIP_ABILITY=Failed to get SIP capability NET_ERROR_GET_WIFI_AP_CFG=Failed to get "WIFI ap' configuration NET_ERROR_SET_WIFI_AP_CFG=Failed to set "WIFI ap" configuration NET_ERROR_GET_DECODE_POLICY=Failed to get decode policy NET_ERROR_SET_DECODE_POLICY=Failed to set decode policy NET_ERROR_TALK_REJECT=refuse talk NET_ERROR_TALK_OPENED=talk has opened by other client NET_ERROR_TALK_RESOURCE_CONFLICIT=resource conflict NET_ERROR_TALK_UNSUPPORTED_ENCODE=unsupported encode type NET_ERROR_TALK_RIGHTLESS=no right NET_ERROR_TALK_FAILED=request failed NET_ERROR_GET_MACHINE_CFG=Failed to get device relative config NET_ERROR_SET_MACHINE_CFG=Failed to set device relative config NET_ERROR_GET_DATA_FAILED=get data failed NET_ERROR_MAC_VALIDATE_FAILED=MAC validate failed NET_ERROR_GET_INSTANCE=Failed to get server instance NET_ERROR_JSON_REQUEST=Generated json string is error NET_ERROR_JSON_RESPONSE=The responding json string is error NET_ERROR_VERSION_HIGHER=The protocol version is lower than current version NET_SPARE_NO_CAPACITY=Hotspare disk operation failed The capacity is low NET_ERROR_SOURCE_IN_USE=Display source is used by other output NET_ERROR_REAVE=advanced users grab low-level user resource NET_ERROR_NETFORBID=net forbid NET_ERROR_GETCFG_MACFILTER=get MAC filter configuration error NET_ERROR_SETCFG_MACFILTER=set MAC filter configuration error NET_ERROR_GETCFG_IPMACFILTER=get IP/MAC filter configuration error NET_ERROR_SETCFG_IPMACFILTER=set IP/MAC filter configuration error NET_ERROR_OPERATION_OVERTIME=operation over time NET_ERROR_SENIOR_VALIDATE_FAILED=senior validation failure NET_ERROR_DEVICE_ID_NOT_EXIST=device ID is not exist NET_ERROR_UNSUPPORTED=unsupport operation NET_ERROR_PROXY_DLLLOAD=proxy dll load error NET_ERROR_PROXY_ILLEGAL_PARAM= proxy user parameter is not legal NET_ERROR_PROXY_INVALID_HANDLE=handle invalid NET_ERROR_PROXY_LOGIN_DEVICE_ERROR=login device error NET_ERROR_PROXY_START_SERVER_ERROR=start proxy server error NET_ERROR_SPEAK_FAILED=request speak failed NET_ERROR_NOT_SUPPORT_F6=unsupport F6 NET_ERROR_CD_UNREADY=CD is not ready NET_ERROR_DIR_NOT_EXIST=Directory does not exist NET_ERROR_UNSUPPORTED_SPLIT_MODE=The device does not support the segmentation model NET_ERROR_OPEN_WND_PARAM=Open the window parameter is illegal NET_ERROR_LIMITED_WND_COUNT=Open the window more than limit NET_ERROR_UNMATCHED_REQUEST=Request command with the current pattern don't match NET_RENDER_ENABLELARGEPICADJUSTMENT_ERROR=Render Library to enable high-definition image internal adjustment strategy error NET_ERROR_UPGRADE_FAILED=Upgrade equipment failure NET_ERROR_NO_TARGET_DEVICE=Can't find the target device NET_ERROR_NO_VERIFY_DEVICE=Can't find the verify device NET_ERROR_CASCADE_RIGHTLESS=No cascade permissions NET_ERROR_LOW_PRIORITY=low priority NET_ERROR_REMOTE_REQUEST_TIMEOUT=The remote device request timeout NET_ERROR_LIMITED_INPUT_SOURCE=Input source beyond maximum route restrictions NET_ERROR_SET_LOG_PRINT_INFO=Failed to set log print NET_ERROR_PARAM_DWSIZE_ERROR="dwSize" is not initialized in input param NET_ERROR_LIMITED_MONITORWALL_COUNT=TV wall exceed limit NET_ERROR_PART_PROCESS_FAILED=Fail to execute part of the process NET_ERROR_TARGET_NOT_SUPPORT=Fail to transmit due to not supported by target NET_ERROR_VISITE_FILE=Access to the file failed NET_ERROR_DEVICE_STATUS_BUSY=Device busy NET_USER_PWD_NOT_AUTHORIZED=Fail to change the password NET_USER_PWD_NOT_STRONG=Password strength is not enough NET_ERROR_NO_SUCH_CONFIG=No corresponding setup NET_ERROR_AUDIO_RECORD_FAILED=Failed to record audio NET_ERROR_SEND_DATA_FAILED=Failed to send out data NET_ERROR_OBSOLESCENT_INTERFACE=Abandoned port NET_ERROR_INSUFFICIENT_INTERAL_BUF=Internal buffer is not sufficient NET_ERROR_NEED_ENCRYPTION_PASSWORD=verify password when changing device IP NET_ERROR_NOSUPPORT_RECORD =device not support the record NET_ERROR_SERIALIZE_ERROR=Failed to serialize data NET_ERROR_DESERIALIZE_ERROR=Failed to deserialize data NET_ERROR_LOWRATEWPAN_ID_EXISTED=the wireless id is already existed NET_ERROR_LOWRATEWPAN_ID_LIMIT=the wireless id limited NET_ERROR_LOWRATEWPAN_ID_ABNORMAL=add the wireless id abnormaly NET_ERROR_ENCRYPT=encrypt data fail NET_ERROR_PWD_ILLEGAL=new password illegal NET_ERROR_DEVICE_ALREADY_INIT=device is already initiation NET_ERROR_SECURITY_CODE=security code check out fail NET_ERROR_SECURITY_CODE_TIMEOUT=security code out of time NET_ERROR_GET_PWD_SPECI=get password specification fail NET_ERROR_NO_AUTHORITY_OF_OPERATION=no authority of operation NET_ERROR_DECRYPT=decrypt data fail NET_ERROR_2D_CODE=2D code check out fail NET_ERROR_INVALID_REQUEST=Invalid request NET_ERROR_PWD_RESET_DISABLE=password reset unable NET_ERROR_PLAY_PRIVATE_DATA=Failed to display private data,such as rule box NET_ERROR_ROBOT_OPERATE_FAILED=robot operate failed NET_ERROR_PHOTOSIZE_EXCEEDSLIMIT=photo size exceeds limit NET_ERROR_USERID_INVALID=Invalid userId NET_ERROR_EXTRACTFEATURE_FAILED=photo extract feature failed NET_ERROR_PHOTO_EXIST=photo exist NET_ERROR_PHOTO_OVERFLOW=photo over flow NET_ERROR_CHANNEL_ALREADY_OPENED=channel has already been opened NET_ERROR_CREATE_SOCKET=create socket error NET_ERROR_CHANNEL_NUM=Invalid channel number NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_ID_EXCEED=target recognition server group id exceed # RealPlay Info START_REALPLAY=Start RealPlay STOP_REALPLAY=Stop RealPlay ATTACH=Attach DETACH=Detach REALPLAY_SUCCEED=Success to start realPlay REALPLAY_FAILED=Failed to start realPlay CHN=Chn CHANNEL=Channel STREAM_TYPE=Stream MASTER_AND_SUB_STREAM=Main/Sub stream MASTER_STREAM=Main Stream SUB_STREAM=Sub Stream # Capture Picture LOCAL_CAPTURE=Local Capture REMOTE_CAPTURE=Remote Capture TIMER_CAPTURE=Timer Capture STOP_CAPTURE=Stop Capture INTERVAL=Interval TIME_INTERVAL_ILLEGAL=Time Interval Illegal PLEASE_START_REALPLAY=Please Start Real Play # PTZ Info PTZ_CONTROL=PTZControl LEFT_UP=LeftUp UP=Up RIGHT_UP=RightUp LEFT=Left RIGHT=Right LEFT_DOWN=LeftDown DOWN=Down RIGHT_DOWN=RightDown ZOOM_ADD=Zoom+ ZOOM_DEC=Zoom- FOCUS_ADD=Focus+ FOCUS_DEC=Focus- IRIS_ADD=Iris+ IRIS_DEC=Iris- SPEED=Speed #ITS EVENT_INFO=Event Information EVENT_NAME=Event Name EVENT_TIME=Event Time EVENT_PICTURE=Event and Picture PLATE_PICTURE=Plate Picture LICENSE_PLATE=License Plate PLATE_TYPE=Plate Type PLATE_COLOR=Plate Color VEHICLE_TYPE=Vehicle Type VEHICLE_SIZE=Vehicle Size VEHICLE_COLOR=Vehicle Color FILE_COUNT=File Count FILE_INDEX=File Index GROUP_ID=Group ID ILLEGAL_PLACE=Illegal Place LANE_NUMBER=Lane Number MANUAL_CAPTURE=Manual Capture OPEN_STROBE=Open Strobe CLOSE_STROBE=Close Strobe INDEX=Index OPERATE=Operate FUNCTION=Function UNDEFINED_COLOR=Undefined Color BLACK=Black WHITE=White RED=Red BLUE=Blue GREEN=Green YELLOW=Yellow GRAY=Gray ORANGE=Orange LIGHT_DUTY=Light Duty MEDIUM=Medium OVER_SIZE=Over Size MINI_SIZE=Miniature Size LARGE_SIZE=Large Size NO_PLATENUMBER=No PlateNumber MANUALSNAP_SUCCEED=Manual snap succeed MANUALSNAP_FAILED=Manual snap failed OPEN_STROBE_SUCCEED=Open strobe succeed OPEN_STROBE_FAILED=Open strobe failed CLOSE_STROBE_SUCCEED=Close strobe succeed CLOSE_STROBE_FAILED=Close strobe failed EVENT_IVS_TRAFFICJUNCTION=Junction EVENT_IVS_TRAFFIC_RUNREDLIGHT=RunRedLight EVENT_IVS_TRAFFIC_OVERLINE=OverLine EVENT_IVS_TRAFFIC_RETROGRADE=ReTrograde EVENT_IVS_TRAFFIC_TURNLEFT=TurnLeft EVENT_IVS_TRAFFIC_TURNRIGHT=TurnRight EVENT_IVS_TRAFFIC_UTURN=UTurn EVENT_IVS_TRAFFIC_OVERSPEED=OverSpeed EVENT_IVS_TRAFFIC_UNDERSPEED=UnderSpeed EVENT_IVS_TRAFFIC_PARKING=Parking EVENT_IVS_TRAFFIC_WRONGROUTE=WrongRoute EVENT_IVS_TRAFFIC_CROSSLANE=CrossLane EVENT_IVS_TRAFFIC_OVERYELLOWLINE=OverYellowLine EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE=YellowPlateInLane EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY=PedestrainPriority EVENT_IVS_TRAFFIC_MANUALSNAP=ManualSnap EVENT_IVS_TRAFFIC_VEHICLEINROUTE=VehicleInRoute EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE=VehicleInBusRoute EVENT_IVS_TRAFFIC_BACKING=Backing EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING=ParkingSpaceParking EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING=ParkingSpaceNoParking EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT=WithoutSafeBelt # DownLoad Info DOWNLOAD_RECORD_BYTIME=DownloadRecordByTime DOWNLOAD_RECORD_BYFILE=DownloadRecordByFile QUERY=Query DOWNLOAD=DownLoad STOP_DOWNLOAD=StopDownLoad START_TIME=Start Time END_TIME=End Time RECORD_TYPE=Record Type GENERAL_RECORD=General Record ALARM_RECORD=Alarm Record MOTION_DETECTION=Motion Detection Record CARD_NUMBER_RECORD=Card Number Record INTELLIGENT_DETECTION=intelligent Record POS_RECORD=pos Record QUERY_RECORD_IS_NOT_EXIST=Query record is not exist PLEASE_CHECK_RECORD_TIME=Please check record time PLEASE_SELECT_TIME_AGAIN=Please select time again,max time different is 6 hour DOWNLOAD_COMPLETED=Download completed PLEASE_FIRST_QUERY_RECORD=Please first query record PLEASE_FIRST_SELECT_ROW_WITH_DATA=Please first select row with data # Time Set YEAR=Year MONTH=Month DAY=Day HOUR=Hour MINUTE=Minute SECOND=Second CONFIRM=Confirm CANCEL=Cancel DATE_CHOOSER=Date Chooser MONDAY=Mon TUESDAY=Tue WEDNESDAY=Wed THURSDAY=Thur FRIDAY=Fri SATURDAY=Sat SUNDAY=Sun # Talk TRANSMIT_TYPE=Transmit Type LOCAL_TRANSMIT_TYPE=Local(not transmit) REMOTE_TRANSMIT_TYPE=Remote(transmit) TRANSMIT_CHANNEL=Speaker Channel START_TALK=Start Talk STOP_TALK=Stop Talk TALK_FAILED=Talk Failed # DeviceSearchAndInt DEVICESEARCH_OPERATE=DeviceSearch Operate DEVICESEARCH_RESULT=DeviceSearch Result DEVICEINIT=DeviceInit DEVICESEARCH=DeviceSearch DEVICE_POINT_TO_POINT_SEARCH=Device IP Point To Point Search START_SEARCH=Start Search STOP_SEARCH=Stop Search START_IP=Start IP END_IP=End IP DEVICE_TYPE=Device Type MAC=MAC SN=SN DEVICE_INIT_STATE=Initialized State INIT_PASSWD=Initialization Password PHONE=Phone MAIL=Mail IP_VERSION=IP Version SUB_MASK=Sub Mask GETWAY=GetWay DETAIL_TYPE=Detail Type HTTP_PORT=HTTP Port LOCAL_IP=local ip CONFIRM_PASSWORD=Confirm Password OLD_DEVICE=Old Device DONOT_SUPPORT_INITIALIZATION=Do not support initialization NOT_INITIALIZED=Uninitialized INITIALIZED=Initialized THE_IP_CONTROL_SCOPE=The scope is too large, please control it between the 1000 PLEASE_FIRST_SELECT_INITIALIZED_DEVICE=Please first select initialized device PLEASE_INPUT_PHONE=Please input phone PLEASE_INPUT_MAIL=Please input mail INCONSISTENT=The password and the confirm password are inconsistent PLEASE_CHECK_IP=Please check IP SEARCHING_WAITING=Searching, please waiting START_LISTEN=Start Listen STOP_LISTEN=Stop Listen SHOW_ALARM_EVENT=Show Alarm Event Info ALARM_LISTEN_FAILED=Alarm Listen Failed ALARM_MESSAGE=Alarm Message EXTERNAL_ALARM=External alarm MOTION_ALARM=Motion detection alarm VIDEOLOST_ALARM=Video loss alarm SHELTER_ALARM=Camera masking alarm DISKFULL_ALARM=HDD full alarm DISKERROR_ALARM=HDD error alarm START=start STOP=stop CURRENT_TIME=Current Time DEVICE_REBOOT=Device Reboot SYNCHRONIZE_TIME=Synchronize Time REBOOT=Reboot SET_TIME=Set Time GET_TIME=Get Time REBOOT_TIPS=Are you sure you want to reboot it? OPERATE_SUCCESS=Operate Success #FaceRecognition FACE_GROUP_ID=Group Id FACE_GROUP_NAME=Group Name PERSON_COUNT=Person Count GROUP_OPERATE=Group Operate PERSON_OPERATE=Person Operate FACE_RECOGNITION_EVENT=FaceRecognition Event FACE_DETECT_EVENT=FaceDetect Event GLOBAL_PICTURE=Global Picture PERSON_PICTURE=Person Picture CANDIDATE_PICTURE=Candidate Picture TIME=Time SEX=Sex AGE=Age COLOR=Color EYE=Eye MOUTH=Mouth MASK=Mask BEARD=Beard MALE=Male FEMALE=Female ID_CARD=Id Card OFFICE_CARD=office card PASSPORT=Passport UNIDENTIFIED=Unidentified HAVE_BEARD=Have Beard NO_BEARD=No Beard OPEN_MOUTH=Open Mouth CLOSE_MOUTH=Close Mouth YELLOW_COLOR=Yellow BLACK_COLOR=Black WHITE_COLOR=White OPEN_EYE=Open Eye CLOSE_EYE=Close Eye SMILE=Smile ANGER=Anger SADNESS=Sadness DISGUST=Disgust FEAR=Fear SURPRISE=Surprise NEUTRAL=Neutral LAUGH=Laugh WEAR_MASK=Wear Mask NO_MASK=No Mask WEAR_GLASSES=Wear Glasses NO_GLASSES=No Glasses UNKNOW=UnKnow UNLIMITED=Unlimited NAME=Name BIRTHDAY=Birthday ID_NO=Id No ID_TYPE=ID Type SIMILARITY=Similarity UID=UID STRANGER=Stranger GLASSES=glasses PICTURE_PATH=picture path FACE_LIBRARY_ID=face library id FACE_LIBRARY_NAME=face library name ADD=Add MODIFY=Modify FRESH=Fresh ADD_GROUP=Add Group MODIFY_GROUP=Modify Group DEL_GROUP=Delete Group DISPOSITION=Disposition DEL_DISPOSITION=Delete Disposition FIND_CONDITION=Find Condition FIND_PERSON=Find Person ADD_PERSON=Add Person MODIFY_PERSON=Modify Person DEL_PERSON=Delete Person PREVIOUSPAGE=Previous Page LASTPAGE=Last Page SELECT_PICTURE=Select Picture SEARCH_BY_PIC=Search by Picture DOWNLOAD_QUERY_PICTURE=Download the query Picture FACE_LIBRARY=face library HISTORY_LIBRARY=history library CHOOSE_FACE_PIC=Please select a face picture EVENT_TYPE=Event Type PAGES_NUMBER=Pages Number SIMILARITY_RANGE=Similarity range[0, 100] PLEASE_INPUT_GROUPNAME=Please input groupName PLEASE_SELECT_GROUP=Please select group PLEASE_SELECT_PERSON=Please select person PLEASE_ADD_DISPOSITION_INFO=Please add disposition info PLEASE_SELECT_DEL_DISPOSITION_INFO=Please select delDisposition info #AutoRegister AUTOREGISTER_LISTEN=AutoRegister Listen DEVICE_CONFIG=Device Configure DEVICE_LIST=Device List DEVICE_MANAGER=Device Manager ADD_DEVICE=Add Device MODIFY_DEVICE=Modify Device DELETE_DEVICE=Delete Device CLEAR_DEVICE=Clear Device IMPORT_DEVICE=Import Device EXPORT_DEVICE=Export Device DEVICE_ID=Device ID ENABLE=Enable REGISTER_ADDRESS=Register Address REGISTER_PORT=Register Port GET=Get SET=Set RECORD=Record DEVICE_LOGIN=Device has logged in ALREADY_EXISTED=Already existed ALREADY_EXISTED_WHETHER_OR_NOT_TO_COVER=Already existed, whether or not to cover(no, not export) FILE_OPEN_PLEASE_CLOSE_FILE=The file is opened, please first close the file IMPORT_COMPLETION=Import completed EXPORT_COMPLETION=Export completed FILE_NOT_EXIST=File is not existed PLEASE_INPUT=Please input MAX_SUPPORT_100=Maximum support is 100 #Attendance ATTENDANCE=Attendance USER_ID=User ID USER_NAME=User Name CARD_NO=Card No QUERY_CONDITION=Query Condition USER_OPERATE=User Operate FINGERPRINT_OPERATE=FingerPrint Operate OPERATE_BY_USER_ID=Operate FingerPrint By User ID OPERATE_BY_FINGERPRINT_ID=Operate FingerPrint By FingerPrint ID FINGERPRINT_ID=FingerPrint ID DELETE=Delete SEARCH=Search SEARCH_FINGERPRINT=Search FingerPrint ADD_FINGERPRINT=Add FingerPrint DELETE_FINGERPRINT=Delete FingerPrint SUBSCRIBE=Subscribe UNSUBSCRIBE=UnSubscribe USER_LIST=User List NEXT_PAGE=Next Page USER_INFO=User Info DOOROPEN_METHOD=Open Door Method FINGERPRINT=FingerPrint FINGERPRINT_INFO=FingerPrint Info FINGERPRINT_DATA=FingerPrint Data CARD=Card DELETE_FINGERPRINT_PROMPT=It will delete all fingerprint of this user SUBSCRIBE_FAILED=Subscribe failed FINGERPRINT_ID_ILLEGAL=FingerPrint id illegal FINGERPRINT_COLLECTION=FingerPrint Collection START_COLLECTION=Start Collection STOP_COLLECTION=Stop Collection IN_THE_COLLECTION=In collection... COLLECTION_COMPLETED=Collection completed COLLECTION_FAILED=Collection failed FINGERPRINT_ID_NOT_EXIST=FingerPrint Id not exist USER_ID_EXCEED_LENGTH=User id exceed max length USER_NAME_EXCEED_LENGTH=User name exceed max length CARD_NO_EXCEED_LENGTH=Card no exceed max length CARD_NAME_EXCEED_LENGTH=Card name exceed max length CARD_PASSWD_EXCEED_LENGTH=Card password exceed max length #Gate GATE=FaceOpenDoor CARD_OPERATE=Card Operate CARD_INFO=Card Information CARD_MANAGER=Card Manager CLEAR=Clear OPEN_STATUS=Open Status OPEN_METHOD=Open Method TEMPERATURE=temperture MASK_STATUS=mask status CARD_UNKNOW=UnKnown Card CARD_GENERAL=General Card CARD_VIP=VIP Card CARD_GUEST=Guest Card CARD_PATROL=Patrol Card CARD_BACKLIST=BackList Card CARD_COERCE=Coerce Card CARD_POLLING=Polling Card CARD_MOTHERCARD=Mother Card STATE_UNKNOWN=UnKnown STATE_NORMAL=Normal STATE_LOSE=Lose STATE_LOGOFF=LogOff STATE_FREEZE=Freeze STATE_ARREARS=Arrears STATE_OVERDUE=OverDue STATE_PREARREARS=PreArrears RECORD_NO=Record No CARD_NAME=Card Name CARD_STATUS=Card Status CARD_PASSWORD=Card Password CARD_TYPE=Card Type CARD_NUM=Card Number USE_TIMES=Use Times IS_FIRST_ENTER=IsFirstEnter IS_VALID=IsValid VALID_PERIOD=Valid Period VALID_START_TIME=Valid Start Time VALID_END_TIME=Valid End Time FIRST_ENTER=FirstEnter NO_FIRST_ENTER=No FirstEnter VALID=Valid INVALID=Invalid PLEASE_SELECT_CARD=Please select card PLEASE_INPUT_CARDNO=Please input cardNo PLEASE_INPUT_USERID=Please input userId WANT_CLEAR_ALL_INFO=Do you want to clear all information ? ADD_CARD_INDO_FAILED=Failed to add card information ADD_CARD_INFO_AND_PERSON_PICTURE_SUCCEED=Succeed to add card information and person picture ADD_CARD_INFO_SUCCEED_BUT_ADD_PERSON_PICTURE_FAILED=Succeed to add card information, but failed to add person picture CARD_EXISTED_ADD_PERSON_PICTURE_SUCCEED=Card information is existed, succeed to add person picture MODIFY_CARD_INFO_SUCCEED=Succeed to modify card information MODIFY_CARD_INFO_FAILED=Failed to modify card information MODIFY_CARD_INFO_AND_PERSON_PICTURE_SUCCEED=Succeed to modify card information and person picture MODIFY_CARD_INFO_SUCCEED_BUT_MODIFY_PERSON_PICTURE_FAILED=Succeed to modify card information, but failed to modify person picture NET_ACCESS_DOOROPEN_METHOD_UNKNOWN=UnKnow NET_ACCESS_DOOROPEN_METHOD_PWD_ONLY=Password NET_ACCESS_DOOROPEN_METHOD_CARD=Card NET_ACCESS_DOOROPEN_METHOD_CARD_FIRST=First Card Then Password NET_ACCESS_DOOROPEN_METHOD_PWD_FIRST=First Password Then Card NET_ACCESS_DOOROPEN_METHOD_REMOTE=Remote Open NET_ACCESS_DOOROPEN_METHOD_BUTTON=Open Door Button NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT=fingerprint lock NET_ACCESS_DOOROPEN_METHOD_PWD_CARD_FINGERPRINT=password+swipe card+fingerprint combination unlock NET_ACCESS_DOOROPEN_METHOD_PWD_FINGERPRINT=password+fingerprint combination unlock NET_ACCESS_DOOROPEN_METHOD_CARD_FINGERPRINT=swipe card+fingerprint combination unlock NET_ACCESS_DOOROPEN_METHOD_PERSONS=multi-people unlock NET_ACCESS_DOOROPEN_METHOD_KEY=Key NET_ACCESS_DOOROPEN_METHOD_COERCE_PWD=Use force password to open the door NET_ACCESS_DOOROPEN_METHOD_QRCODE=Use QR Code NET_ACCESS_DOOROPEN_METHOD_FACE_RECOGNITION=face recogniton to open the door NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD=comparsion of face and ID card NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_AND_IDCARD=ID card and compasion of face and ID card NET_ACCESS_DOOROPEN_METHOD_BLUETOOTH=Bluetooth NET_ACCESS_DOOROPEN_METHOD_CUSTOM_PASSWORD=Custom password NET_ACCESS_DOOROPEN_METHOD_USERID_AND_PWD=UserID and password NET_ACCESS_DOOROPEN_METHOD_FACE_AND_PWD=Face and password NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_PWD=Fingerprint and password NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE= FingerPrint and face NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE=Card and face NET_ACCESS_DOOROPEN_METHOD_FACE_OR_PWD=Face or password NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_PWD=Fingerprint or password NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE=Fingerprint or face NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE=Card or face NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT=Card or fingerprint NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE_AND_PWD=Fingerprint and face and password NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE_AND_PWD=Card and face and password NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_PWD=Card and fingerprint and password NET_ACCESS_DOOROPEN_METHOD_CARD_AND_PWD_AND_FACE=Card and password and face NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE_OR_PWD=Fingerprint or face or password NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE_OR_PWD=Card or face or password NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE=Card or fingerprint or face NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_FACE_AND_PWD=Card and fingerprint and face and password NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE_OR_PWD=Card or fingerprint or face or password NET_ACCESS_DOOROPEN_METHOD_FACEIPCARDANDIDCARD_OR_CARD_OR_FACE=ID card and compasion of face and ID card or card or face NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_OR_CARD_OR_FACE=ID card and compasion of face or card or face #ThermalCamera THERMAL_CAMERA=Thermal Camera THERMAL_OPERATE=Operate POINT_QUERY=Query Point ITEM_QUERY=Query Item TEMPER_QUERY=Query Temperature HEATMAP=HeatMap POINT_TEMPER=Point Temperature ITEM_TEMPER=Item Temperature X=X Y=Y COORDINATE_ILLEGAL=Coordinate Illegal QUERY_RESULT=Query Result METER_TYPE=Meter Type TEMPER_UNIT=Temperature Unit TEMPER=Temperature UNKNOWN=Unknown SPOT=Spot LINE=Line AREA=Area CENTIGRADE=Celsius FAHRENHEIT=Fahrenheit PRESET_ID=Preset Id RULE_ID=Rule Id TEMPER_AVER=Average Temperature TEMPER_MAX=Maximum Temperature TEMPER_MIN=Minimum Temperature TEMPER_MID=Middle Temperature TEMPER_STD=Standard Deviation INPUT_ILLEGAL=Input Illegal TEMPER_INFO=Temperature Info FIVE_MINUTES=Five Minutes TEN_MINUTES=Ten Minutes FIFTEEN_MINUTES=Fifteen Minutes THIRTY_MINUTES=Thirty Minutes SAVE_PERIOD=Save Period QUERY_LIST=Query List RECORD_TIME=Record Time ITEM_NAME=Name COORDINATE=Coordinate NO_RECORD=No Record HEATMAP_OPERATE=Operate IDLE=Idle ACQUIRING=Acquiring RADIOMETRY_ATTACH=Attach RADIOMETRY_DETACH=Detach RADIOMETRY_FETCH=Fetch SAVE_HEATMAP=Save HeatMap HEATMAP_METADATA_INFO=HeatMap MetaData HEIGHT=Height WIDTH=Width LENGTH=Size SENSOR_TYPE=Sensor Type HEATMAP_SAVE_SUCCESS=HeatMap Save Success #matrix screen MATRIX_SCREEN=Lattice Screen PASSING_STATE=Passing state PASSING_CAR=pass car NO_CAR=no car IN_TIME=Entry time OUT_TIME=departure time PLATE_NUMBER=plate number CAR_OWNER=car owner PARKING_TIME=parking time USER_TYPE=user type MONTHLY_CARD_USER=monthly card user ANNUAL_CARD_USER=annual card user LONG_TERM_USER=long term user/VIP TEMPORARY_USER=temporary user/Visitor PARKING_CHARGE=parking charge DAYS_DUE=days due REMAINING_PARKING_SPACES=Remaining parking spaces VEHICLES_NOT_ALLOWED_TO_PASS=vehicles not allowed to pass ALLOWED_VEHICLES_TO_PASS=allowed vehicles to pass SET_UP=set up SUCCESSFULLY_ISSUED=Successfully issued DELIVERY FAILED=Delivery failed CUSTOM_USER_CLASS=Custom user class REMARKS_INFORMATION=Remarks information CUSTOM_INFORMATION=Custom information # human number statistic HUMAN_NUMBER_STATISTIC_TITLE=Human Number Statistic HUMAN_NUMBER_STATISTIC_CONTROL=Human Number Statistic Control HUMAN_NUMBER_STATISTIC_EVENT_TITLE=Human Number Statistic Event List HUMAN_NUMBER_STATISTIC_EVENT_CHANNEL=Channel HUMAN_NUMBER_STATISTIC_EVENT_TIME=EventTime HUMAN_NUMBER_STATISTIC_EVENT_HOUR_IN=HourIn HUMAN_NUMBER_STATISTIC_EVENT_HOUR_OUT=HourOut HUMAN_NUMBER_STATISTIC_EVENT_TODAY_IN=TodayIn HUMAN_NUMBER_STATISTIC_EVENT_TODAY_OUT=TodayOut HUMAN_NUMBER_STATISTIC_EVENT_TOTAL_IN=TotalIn HUMAN_NUMBER_STATISTIC_EVENT_TOTAL_OUT=TotalOut HUMAN_NUMBER_STATIC_EVENT_OSD_CLEAR=OSD Clear VTO_ALARM_EVENT_ROOM_NO=RoomNo. VTO_ALARM_EVENT_CARD_NO=CardNo. VTO_ALARM_EVENT_TIME=Time VTO_ALARM_EVENT_OPEN_METHOD=OpenMethod VTO_ALARM_EVENT_STATUS=Status VTO_REAL_LOAD_ROOM_NO=RoomNo. VTO_REAL_LOAD_CARD_NO=CardNO. VTO_REAL_LOAD_TIME=Time VTO_REAL_LOAD_EVENT_INFO=EventInfo VTO_OPERATE_MANAGER_TITLE=Card&Fingerprint&FaceManager VTO_OPERATE_MANAGER_REC_NO=RecNo. VTO_OPERATE_MANAGER_ROOM_NO=RoomNo. VTO_OPERATE_MANAGER_CARD_NO=CardNo. VTO_OPERATE_MANAGER_FINGER_PRINT_DATA=FingerprintData VTO_OPERATE_INFO_TITLE=Add VTO_OPERATE_COLLECTION_FINGER_PRINT_TITLE=CollectionFingerPrint DOOR_OPEN=Open Door DOOR_CLOSE=Close Door EVENT_OPERATE=Event Operate START_REAL_LOAD_PIC=StartRealLoad STOP_REAL_LOAD_PIC=StopRealLoad ALARM_EVENT=AlarmEvent REAL_LOAD_EVENT=RealLoadEvent COLLECTION_RESULT=CollectionResult NEED_FINGER_PRINT=Need FingerPrint FACE_INFO=FaceInfo OPEN=open VTO=VTO SCADA=SCADA TRAFFIC_ALLOW_LIST=Traffic Allow List MODIFY_CARD_FACE_FAILED=failed to modify face info. EM_MASK_STATE_UNKNOWN=unknown EM_MASK_STATE_NODISTI=unrecognized EM_MASK_STATE_NOMASK=Not wearing mask EM_MASK_STATE_WEAR=wearing mask END_SEARCH=End of query DOWNLOAD_PICTURE=download picture ENTER_PICTURE_PATH=Please enter the picture path LOADING=The equipment is being processed QUERY_CARD_EXIST_FAILED=Check if the cardNo exists failed CARD_EXIST=The cardNo already exists INPUT_ROOM_NO=please input room number ROOM_NO_EXCEED_LENGTH=room number exceed max length REMOVE_CARD_FACE_FAILED=remove card face failed STOP_LISTEN_FAILED=stop listen failed SCREEN_NUMBER=screen number TEXT_CONTENT=text content TEXT_CONTENT_TYPE=text content type TEXT_CONTENT_COLOR=text content color SCROLL_TYPE=scroll type SCROLL_SPEED=scroll speed ORDINARY=ordinary QR_CODE=QR code LOCAL_TIME=local time RESOURCE=resource NOT_ROLLING=not rolling SCROLL_LEFT_AND_RIGHT=scroll left and right SCROLL_UP_AND_DOWN=scroll up and right NUMBER_STRING=number string VOICE_TEXT=vioce text ISSUED=issued PROMPT=Please add corresponding parameters SCADA_DEVICE_LIST=device list DEVICE_NAME=device name POINT_ID=point id IF_VALID_SIGNAL_POINT=valid signal point POINT_NAME=point name ALARM_DESCRIBE=alarm describe ALARM_LEVEL=alarm level ALARM_DELAY=alarm delay ALARM_TYPE=alarm type ALARM_TIME=alarm time COLLECT_TIME=collect time SCADA_POINT_LIST=point list SCADA_ATTACH_ALARM=attach alarm SCADA_ATTACH_INFO=attach info SCADA_ATTACH=start listen BTN_LIST = get ALLOWLIST_OPERATION=allowlist operation SINGLE_UPLOAD=single upload LICENSE_PLATE_RUN=The license plate to run FUZZY_QUERY=fuzzy query DELETE_ALL=delete all AUTHORIZATION=authorization UNAUTHORIZATION=unauthorized BATCH_UPLOAD=batch upload BROWSE=browse UPLOAD=upload QUERY_INFORMATION=query information DIALOG=dialog LICENSE_PLATE_NUMBER=license plate number MODIFY_PANEL=modify panel SERIAL_NUMBER=serial number OPEN_MODEL=open model LICENSE_PLATE_LENGTH_TOO_LONG=License plate length is too long NAME_TOO_LONG=The name is too long ADD_SUCCESS= add a success ADD_FAIL=add a fail DELETE_SUCCESS=delete a success DELETE_FAIL=delete a fail MODIFY_SUCCESS=modify the success MODIFY_FAIL=modify the fail UPLOAD_SUCCESS=Uploaded successfully ENTER_QUERY_DATA=Please enter the data to query FILLING_RULES=fill in legal characters UPLOAD_FAIL=upload fail UPLOADING=uploading SURE_UPLOAD=Are you sure to upload? DATA_NUMBER=pieces of data SELECT_DATA=Please select data ard-work/src/main/resources/resources_zh_CN.properties
对比新文件 @@ -0,0 +1 @@ # FunctionList FUNCTIONLIST=\u529F\u80FD\u5217\u8868 REALPLAY=\u5B9E\u65F6\u9884\u89C8 CAPTURE_PICTURE=\u6293\u62CD\u56FE\u7247 MULTIREALPLAY=\u53CC\u901A\u9053\u5B9E\u65F6\u9884\u89C8 DOWNLOAD_RECORD=\u4E0B\u8F7D\u5F55\u50CF ITS_EVENT=\u667A\u80FD\u4EA4\u901A TALK=\u8BED\u97F3\u5BF9\u8BB2 DEVICESEARCH_DEVICEINIT=\u8BBE\u5907\u641C\u7D22\u548C\u8BBE\u5907\u521D\u59CB\u5316 PTZ=\u4E91\u53F0\u63A7\u5236 FACERECOGNITION=\u76EE\u6807\u8BC6\u522B ALARM_LISTEN=\u62A5\u8B66\u76D1\u542C DEVICE_CONTROL=\u8BBE\u5907\u63A7\u5236 AUTOREGISTER=\u4E3B\u52A8\u6CE8\u518C ONLINE=\u5728\u7EBF # Login Info DEVICE_IP=\u8BBE\u5907\u5730\u5740 DEVICE_PORT=\u7AEF\u53E3\u53F7 USERNAME=\u7528\u6237\u540D PASSWORD=\u5BC6\u7801 IP=\u5730\u5740 LOGIN=\u767B\u5F55 LOGOUT=\u767B\u51FA LOGIN_SUCCEED=\u767B\u5F55\u6210\u529F LOGIN_FAILED=\u767B\u5F55\u5931\u8D25 DISCONNECT=\u8BBE\u5907\u65AD\u7EBF DISCONNECT_RECONNECTING=\u8BBE\u5907\u65AD\u7EBF\uFF0C\u6B63\u5728\u91CD\u8FDE\u4E2D PROMPT_MESSAGE=\u63D0\u793A\u4FE1\u606F ERROR_MESSAGE=\u9519\u8BEF\u4FE1\u606F SUCCEED=\u6210\u529F FAILED=\u5931\u8D25 PLEASE_INPUT_DEVICE_IP=\u8BF7\u8F93\u5165\u8BBE\u5907\u5730\u5740 PLEASE_INPUT_DEVICE_PORT=\u8BF7\u8F93\u5165\u8BBE\u5907\u7AEF\u53E3\u53F7 PLEASE_INPUT_DEVICE_USERNAME=\u8BF7\u8F93\u5165\u7528\u6237\u540D PLEASE_INPUT_DEVICE_PASSWORD=\u8BF7\u8F93\u5165\u5BC6\u7801 PLEASE_INPUT_CONFIRM_PASSWORD=\u8BF7\u8F93\u5165\u786E\u8BA4\u5BC6\u7801 # Error Info NET_NOERROR=\u6CA1\u6709\u9519\u8BEF NET_ERROR=\u672A\u77E5\u9519\u8BEF NET_SYSTEM_ERROR=Windows\u7CFB\u7EDF\u51FA\u9519 NET_NETWORK_ERROR=\u7F51\u7EDC\u9519\u8BEF\uFF0C\u53EF\u80FD\u662F\u56E0\u4E3A\u7F51\u7EDC\u8D85\u65F6 NET_DEV_VER_NOMATCH=\u8BBE\u5907\u534F\u8BAE\u4E0D\u5339\u914D NET_INVALID_HANDLE=\u53E5\u67C4\u65E0\u6548 NET_OPEN_CHANNEL_ERROR=\u6253\u5F00\u901A\u9053\u5931\u8D25 NET_CLOSE_CHANNEL_ERROR=\u5173\u95ED\u901A\u9053\u5931\u8D25 NET_ILLEGAL_PARAM=\u7528\u6237\u53C2\u6570\u4E0D\u5408\u6CD5 NET_SDK_INIT_ERROR=SDK\u521D\u59CB\u5316\u51FA\u9519 NET_SDK_UNINIT_ERROR=SDK\u6E05\u7406\u51FA\u9519 NET_RENDER_OPEN_ERROR=\u7533\u8BF7render\u8D44\u6E90\u51FA\u9519 NET_DEC_OPEN_ERROR=\u6253\u5F00\u89E3\u7801\u5E93\u51FA\u9519 NET_DEC_CLOSE_ERROR=\u5173\u95ED\u89E3\u7801\u5E93\u51FA\u9519 NET_MULTIPLAY_NOCHANNEL=\u591A\u753B\u9762\u9884\u89C8\u4E2D\u68C0\u6D4B\u5230\u901A\u9053\u6570\u4E3A0 NET_TALK_INIT_ERROR=\u5F55\u97F3\u5E93\u521D\u59CB\u5316\u5931\u8D25 NET_TALK_NOT_INIT=\u5F55\u97F3\u5E93\u672A\u7ECF\u521D\u59CB\u5316 NET_TALK_SENDDATA_ERROR=\u53D1\u9001\u97F3\u9891\u6570\u636E\u51FA\u9519 NET_REAL_ALREADY_SAVING=\u5B9E\u65F6\u6570\u636E\u5DF2\u7ECF\u5904\u4E8E\u4FDD\u5B58\u72B6\u6001 NET_NOT_SAVING=\u672A\u4FDD\u5B58\u5B9E\u65F6\u6570\u636E NET_OPEN_FILE_ERROR=\u6253\u5F00\u6587\u4EF6\u51FA\u9519 NET_PTZ_SET_TIMER_ERROR=\u542F\u52A8\u4E91\u53F0\u63A7\u5236\u5B9A\u65F6\u5668\u5931\u8D25 NET_RETURN_DATA_ERROR=\u5BF9\u8FD4\u56DE\u6570\u636E\u7684\u6821\u9A8C\u51FA\u9519 NET_INSUFFICIENT_BUFFER=\u6CA1\u6709\u8DB3\u591F\u7684\u7F13\u5B58 NET_NOT_SUPPORTED=\u5F53\u524DSDK\u672A\u652F\u6301\u8BE5\u529F\u80FD NET_NO_RECORD_FOUND=\u67E5\u8BE2\u4E0D\u5230\u5F55\u50CF NET_NOT_AUTHORIZED=\u65E0\u64CD\u4F5C\u6743\u9650 NET_NOT_NOW=\u6682\u65F6\u65E0\u6CD5\u6267\u884C NET_NO_TALK_CHANNEL=\u672A\u53D1\u73B0\u5BF9\u8BB2\u901A\u9053 NET_NO_AUDIO=\u672A\u53D1\u73B0\u97F3\u9891 NET_NO_INIT=\u7F51\u7EDCSDK\u672A\u7ECF\u521D\u59CB\u5316 NET_DOWNLOAD_END=\u4E0B\u8F7D\u5DF2\u7ED3\u675F NET_EMPTY_LIST=\u67E5\u8BE2\u7ED3\u679C\u4E3A\u7A7A NET_ERROR_GETCFG_SYSATTR=\u83B7\u53D6\u7CFB\u7EDF\u5C5E\u6027\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_SERIAL=\u83B7\u53D6\u5E8F\u5217\u53F7\u5931\u8D25 NET_ERROR_GETCFG_GENERAL=\u83B7\u53D6\u5E38\u89C4\u5C5E\u6027\u5931\u8D25 NET_ERROR_GETCFG_DSPCAP=\u83B7\u53D6DSP\u80FD\u529B\u63CF\u8FF0\u5931\u8D25 NET_ERROR_GETCFG_NETCFG=\u83B7\u53D6\u7F51\u7EDC\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_CHANNAME=\u83B7\u53D6\u901A\u9053\u540D\u79F0\u5931\u8D25 NET_ERROR_GETCFG_VIDEO=\u83B7\u53D6\u89C6\u9891\u5C5E\u6027\u5931\u8D25 NET_ERROR_GETCFG_RECORD=\u83B7\u53D6\u5F55\u8C61\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_PRONAME=\u83B7\u53D6\u89E3\u7801\u5668\u534F\u8BAE\u540D\u79F0\u5931\u8D25 NET_ERROR_GETCFG_FUNCNAME=\u83B7\u53D6232\u4E32\u53E3\u529F\u80FD\u540D\u79F0\u5931\u8D25 NET_ERROR_GETCFG_485DECODER=\u83B7\u53D6\u89E3\u7801\u5668\u5C5E\u6027\u5931\u8D25 NET_ERROR_GETCFG_232COM=\u83B7\u53D6232\u4E32\u53E3\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_ALARMIN=\u83B7\u53D6\u5916\u90E8\u62A5\u8B66\u8F93\u5165\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_ALARMDET=\u83B7\u53D6\u52A8\u6001\u68C0\u6D4B\u62A5\u8B66\u5931\u8D25 NET_ERROR_GETCFG_SYSTIME=\u83B7\u53D6\u8BBE\u5907\u65F6\u95F4\u5931\u8D25 NET_ERROR_GETCFG_PREVIEW=\u83B7\u53D6\u9884\u89C8\u53C2\u6570\u5931\u8D25 NET_ERROR_GETCFG_AUTOMT=\u83B7\u53D6\u81EA\u52A8\u7EF4\u62A4\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_VIDEOMTRX=\u83B7\u53D6\u89C6\u9891\u77E9\u9635\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_COVER=\u83B7\u53D6\u533A\u57DF\u906E\u6321\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_WATERMAKE=\u83B7\u53D6\u56FE\u8C61\u6C34\u5370\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_MULTICAST=\u83B7\u53D6\u914D\u7F6E\u5931\u8D25\u4F4D\u7F6E\uFF1A\u7EC4\u64AD\u7AEF\u53E3\u6309\u901A\u9053\u914D\u7F6E NET_ERROR_SETCFG_GENERAL=\u4FEE\u6539\u5E38\u89C4\u5C5E\u6027\u5931\u8D25 NET_ERROR_SETCFG_NETCFG=\u4FEE\u6539\u7F51\u7EDC\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_CHANNAME=\u4FEE\u6539\u901A\u9053\u540D\u79F0\u5931\u8D25 NET_ERROR_SETCFG_VIDEO=\u4FEE\u6539\u89C6\u9891\u5C5E\u6027\u5931\u8D25 NET_ERROR_SETCFG_RECORD=\u4FEE\u6539\u5F55\u8C61\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_485DECODER=\u4FEE\u6539\u89E3\u7801\u5668\u5C5E\u6027\u5931\u8D25 NET_ERROR_SETCFG_232COM=\u4FEE\u6539232\u4E32\u53E3\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_ALARMIN=\u4FEE\u6539\u5916\u90E8\u8F93\u5165\u62A5\u8B66\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_ALARMDET=\u4FEE\u6539\u52A8\u6001\u68C0\u6D4B\u62A5\u8B66\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_SYSTIME=\u4FEE\u6539\u8BBE\u5907\u65F6\u95F4\u5931\u8D25 NET_ERROR_SETCFG_PREVIEW=\u4FEE\u6539\u9884\u89C8\u53C2\u6570\u5931\u8D25 NET_ERROR_SETCFG_AUTOMT=\u4FEE\u6539\u81EA\u52A8\u7EF4\u62A4\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_VIDEOMTRX=\u4FEE\u6539\u89C6\u9891\u77E9\u9635\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_COVER=\u4FEE\u6539\u533A\u57DF\u906E\u6321\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_WATERMAKE=\u4FEE\u6539\u56FE\u8C61\u6C34\u5370\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_WLAN=\u4FEE\u6539\u65E0\u7EBF\u7F51\u7EDC\u4FE1\u606F\u5931\u8D25 NET_ERROR_SETCFG_WLANDEV=\u9009\u62E9\u65E0\u7EBF\u7F51\u7EDC\u8BBE\u5907\u5931\u8D25 NET_ERROR_SETCFG_REGISTER=\u4FEE\u6539\u4E3B\u52A8\u6CE8\u518C\u53C2\u6570\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_CAMERA=\u4FEE\u6539\u6444\u50CF\u5934\u5C5E\u6027\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_INFRARED=\u4FEE\u6539\u7EA2\u5916\u62A5\u8B66\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_SOUNDALARM=\u4FEE\u6539\u97F3\u9891\u62A5\u8B66\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_STORAGE=\u4FEE\u6539\u5B58\u50A8\u4F4D\u7F6E\u914D\u7F6E\u5931\u8D25 NET_AUDIOENCODE_NOTINIT=\u97F3\u9891\u7F16\u7801\u63A5\u53E3\u6CA1\u6709\u6210\u529F\u521D\u59CB\u5316 NET_DATA_TOOLONGH=\u6570\u636E\u8FC7\u957F NET_UNSUPPORTED=\u8BBE\u5907\u4E0D\u652F\u6301\u8BE5\u64CD\u4F5C NET_DEVICE_BUSY=\u8BBE\u5907\u8D44\u6E90\u4E0D\u8DB3 NET_SERVER_STARTED=\u670D\u52A1\u5668\u5DF2\u7ECF\u542F\u52A8 NET_SERVER_STOPPED=\u670D\u52A1\u5668\u5C1A\u672A\u6210\u529F\u542F\u52A8 NET_LISTER_INCORRECT_SERIAL=\u8F93\u5165\u5E8F\u5217\u53F7\u6709\u8BEF NET_QUERY_DISKINFO_FAILED=\u83B7\u53D6\u786C\u76D8\u4FE1\u606F\u5931\u8D25 NET_ERROR_GETCFG_SESSION=\u83B7\u53D6\u8FDE\u63A5Session\u4FE1\u606F NET_USER_FLASEPWD_TRYTIME=\u8F93\u5165\u5BC6\u7801\u9519\u8BEF\u8D85\u8FC7\u9650\u5236\u6B21\u6570 NET_LOGIN_ERROR_PASSWORD=\u5BC6\u7801\u4E0D\u6B63\u786E NET_LOGIN_ERROR_USER=\u5E10\u6237\u4E0D\u5B58\u5728 NET_LOGIN_ERROR_TIMEOUT=\u7B49\u5F85\u767B\u5F55\u8FD4\u56DE\u8D85\u65F6 NET_LOGIN_ERROR_RELOGGIN=\u5E10\u53F7\u5DF2\u767B\u5F55 NET_LOGIN_ERROR_LOCKED=\u5E10\u53F7\u5DF2\u88AB\u9501\u5B9A NET_LOGIN_ERROR_BLACKLIST=\u5E10\u53F7\u5DF2\u88AB\u5217\u4E3A\u7981\u6B62\u540D\u5355 NET_LOGIN_ERROR_BUSY=\u8D44\u6E90\u4E0D\u8DB3\uFF0C\u7CFB\u7EDF\u5FD9 NET_LOGIN_ERROR_CONNECT=\u767B\u5F55\u8BBE\u5907\u8D85\u65F6\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u5E76\u91CD\u8BD5 NET_LOGIN_ERROR_NETWORK=\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25 NET_LOGIN_ERROR_SUBCONNECT=\u767B\u5F55\u8BBE\u5907\u6210\u529F\uFF0C\u4F46\u65E0\u6CD5\u521B\u5EFA\u89C6\u9891\u901A\u9053\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u72B6\u51B5 NET_LOGIN_ERROR_MAXCONNECT=\u8D85\u8FC7\u6700\u5927\u8FDE\u63A5\u6570 NET_LOGIN_ERROR_PROTOCOL3_ONLY=\u53EA\u652F\u63013\u4EE3\u534F\u8BAE NET_LOGIN_ERROR_UKEY_LOST=\u672A\u63D2\u5165U\u76FE\u6216U\u76FE\u4FE1\u606F\u9519\u8BEF NET_LOGIN_ERROR_NO_AUTHORIZED=\u5BA2\u6237\u7AEFIP\u5730\u5740\u6CA1\u6709\u767B\u5F55\u6743\u9650 NET_LOGIN_ERROR_USER_OR_PASSOWRD=\u8D26\u53F7\u6216\u5BC6\u7801\u9519\u8BEF NET_LOGIN_ERROR_DEVICE_NOT_INIT=\u8BBE\u5907\u5C1A\u672A\u521D\u59CB\u5316\uFF0C\u4E0D\u80FD\u767B\u5F55\uFF0C\u8BF7\u5148\u521D\u59CB\u5316\u8BBE\u5907 NET_RENDER_SOUND_ON_ERROR=Render\u5E93\u6253\u5F00\u97F3\u9891\u51FA\u9519 NET_RENDER_SOUND_OFF_ERROR=Render\u5E93\u5173\u95ED\u97F3\u9891\u51FA\u9519 NET_RENDER_SET_VOLUME_ERROR=Render\u5E93\u63A7\u5236\u97F3\u91CF\u51FA\u9519 NET_RENDER_ADJUST_ERROR=Render\u5E93\u8BBE\u7F6E\u753B\u9762\u53C2\u6570\u51FA\u9519 NET_RENDER_PAUSE_ERROR=Render\u5E93\u6682\u505C\u64AD\u653E\u51FA\u9519 NET_RENDER_SNAP_ERROR=Render\u5E93\u6293\u56FE\u51FA\u9519 NET_RENDER_STEP_ERROR=Render\u5E93\u6B65\u8FDB\u51FA\u9519 NET_RENDER_FRAMERATE_ERROR=Render\u5E93\u8BBE\u7F6E\u5E27\u7387\u51FA\u9519 NET_RENDER_DISPLAYREGION_ERROR=Render\u5E93\u8BBE\u7F6E\u663E\u793A\u533A\u57DF\u51FA\u9519 NET_RENDER_GETOSDTIME_ERROR=Render\u5E93\u83B7\u53D6\u5F53\u524D\u64AD\u653E\u65F6\u95F4\u51FA\u9519 NET_GROUP_EXIST=\u7EC4\u540D\u5DF2\u5B58\u5728 NET_GROUP_NOEXIST=\u7EC4\u540D\u4E0D\u5B58\u5728 NET_GROUP_RIGHTOVER=\u7EC4\u7684\u6743\u9650\u8D85\u51FA\u6743\u9650\u5217\u8868\u8303\u56F4 NET_GROUP_HAVEUSER=\u7EC4\u4E0B\u6709\u7528\u6237\uFF0C\u4E0D\u80FD\u5220\u9664 NET_GROUP_RIGHTUSE=\u7EC4\u7684\u67D0\u4E2A\u6743\u9650\u88AB\u7528\u6237\u4F7F\u7528\uFF0C\u4E0D\u80FD\u5220\u9664 NET_GROUP_SAMENAME=\u65B0\u7EC4\u540D\u540C\u5DF2\u6709\u7EC4\u540D\u91CD\u590D NET_USER_EXIST=\u7528\u6237\u5DF2\u5B58\u5728 NET_USER_NOEXIST=\u7528\u6237\u4E0D\u5B58\u5728 NET_USER_RIGHTOVER=\u7528\u6237\u6743\u9650\u8D85\u51FA\u7EC4\u6743\u9650 NET_USER_PWD=\u4FDD\u7559\u5E10\u53F7\uFF0C\u4E0D\u5BB9\u8BB8\u4FEE\u6539\u5BC6\u7801 NET_USER_FLASEPWD=\u5BC6\u7801\u4E0D\u6B63\u786E NET_USER_NOMATCHING=\u5BC6\u7801\u4E0D\u5339\u914D NET_USER_INUSE=\u8D26\u53F7\u6B63\u5728\u4F7F\u7528\u4E2D NET_ERROR_GETCFG_ETHERNET=\u83B7\u53D6\u7F51\u5361\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_WLAN=\u83B7\u53D6\u65E0\u7EBF\u7F51\u7EDC\u4FE1\u606F\u5931\u8D25 NET_ERROR_GETCFG_WLANDEV=\u83B7\u53D6\u65E0\u7EBF\u7F51\u7EDC\u8BBE\u5907\u5931\u8D25 NET_ERROR_GETCFG_REGISTER=\u83B7\u53D6\u4E3B\u52A8\u6CE8\u518C\u53C2\u6570\u5931\u8D25 NET_ERROR_GETCFG_CAMERA=\u83B7\u53D6\u6444\u50CF\u5934\u5C5E\u6027\u5931\u8D25 NET_ERROR_GETCFG_INFRARED=\u83B7\u53D6\u7EA2\u5916\u62A5\u8B66\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_SOUNDALARM=\u83B7\u53D6\u97F3\u9891\u62A5\u8B66\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_STORAGE=\u83B7\u53D6\u5B58\u50A8\u4F4D\u7F6E\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_MAIL=\u83B7\u53D6\u90AE\u4EF6\u914D\u7F6E\u5931\u8D25 NET_CONFIG_DEVBUSY=\u6682\u65F6\u65E0\u6CD5\u8BBE\u7F6E NET_CONFIG_DATAILLEGAL=\u914D\u7F6E\u6570\u636E\u4E0D\u5408\u6CD5 NET_ERROR_GETCFG_DST=\u83B7\u53D6\u590F\u4EE4\u65F6\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_DST=\u8BBE\u7F6E\u590F\u4EE4\u65F6\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_VIDEO_OSD=\u83B7\u53D6\u89C6\u9891OSD\u53E0\u52A0\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_VIDEO_OSD=\u8BBE\u7F6E\u89C6\u9891OSD\u53E0\u52A0\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_GPRSCDMA=\u83B7\u53D6CDMA\GPRS\u7F51\u7EDC\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_GPRSCDMA=\u8BBE\u7F6ECDMA\GPRS\u7F51\u7EDC\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_IPFILTER=\u83B7\u53D6IP\u8FC7\u6EE4\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_IPFILTER=\u8BBE\u7F6EIP\u8FC7\u6EE4\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_TALKENCODE=\u83B7\u53D6\u8BED\u97F3\u5BF9\u8BB2\u7F16\u7801\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_TALKENCODE=\u8BBE\u7F6E\u8BED\u97F3\u5BF9\u8BB2\u7F16\u7801\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_RECORDLEN=\u83B7\u53D6\u5F55\u50CF\u6253\u5305\u957F\u5EA6\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_RECORDLEN=\u8BBE\u7F6E\u5F55\u50CF\u6253\u5305\u957F\u5EA6\u914D\u7F6E\u5931\u8D25 NET_DONT_SUPPORT_SUBAREA=\u4E0D\u652F\u6301\u7F51\u7EDC\u786C\u76D8\u5206\u533A NET_ERROR_GET_AUTOREGSERVER=\u83B7\u53D6\u8BBE\u5907\u4E0A\u4E3B\u52A8\u6CE8\u518C\u670D\u52A1\u5668\u4FE1\u606F\u5931\u8D25 NET_ERROR_CONTROL_AUTOREGISTER=\u4E3B\u52A8\u6CE8\u518C\u91CD\u5B9A\u5411\u6CE8\u518C\u9519\u8BEF NET_ERROR_DISCONNECT_AUTOREGISTER=\u65AD\u5F00\u4E3B\u52A8\u6CE8\u518C\u670D\u52A1\u5668\u9519\u8BEF NET_ERROR_GETCFG_MMS=\u83B7\u53D6mms\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_MMS=\u8BBE\u7F6Emms\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_SMSACTIVATION=\u83B7\u53D6\u77ED\u4FE1\u6FC0\u6D3B\u65E0\u7EBF\u8FDE\u63A5\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_SMSACTIVATION=\u8BBE\u7F6E\u77ED\u4FE1\u6FC0\u6D3B\u65E0\u7EBF\u8FDE\u63A5\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_DIALINACTIVATION=\u83B7\u53D6\u62E8\u53F7\u6FC0\u6D3B\u65E0\u7EBF\u8FDE\u63A5\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_DIALINACTIVATION=\u8BBE\u7F6E\u62E8\u53F7\u6FC0\u6D3B\u65E0\u7EBF\u8FDE\u63A5\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_VIDEOOUT=\u67E5\u8BE2\u89C6\u9891\u8F93\u51FA\u53C2\u6570\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_VIDEOOUT=\u8BBE\u7F6E\u89C6\u9891\u8F93\u51FA\u53C2\u6570\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_OSDENABLE=\u83B7\u53D6osd\u53E0\u52A0\u4F7F\u80FD\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_OSDENABLE=\u8BBE\u7F6Eosd\u53E0\u52A0\u4F7F\u80FD\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_ENCODERINFO=\u8BBE\u7F6E\u6570\u5B57\u901A\u9053\u524D\u7AEF\u7F16\u7801\u63A5\u5165\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_TVADJUST=\u83B7\u53D6TV\u8C03\u8282\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_TVADJUST=\u8BBE\u7F6ETV\u8C03\u8282\u914D\u7F6E\u5931\u8D25 NET_ERROR_CONNECT_FAILED=\u8BF7\u6C42\u5EFA\u7ACB\u8FDE\u63A5\u5931\u8D25 NET_ERROR_SETCFG_BURNFILE=\u8BF7\u6C42\u523B\u5F55\u6587\u4EF6\u4E0A\u4F20\u5931\u8D25 NET_ERROR_SNIFFER_GETCFG=\u83B7\u53D6\u6293\u5305\u914D\u7F6E\u4FE1\u606F\u5931\u8D25 NET_ERROR_SNIFFER_SETCFG=\u8BBE\u7F6E\u6293\u5305\u914D\u7F6E\u4FE1\u606F\u5931\u8D25 NET_ERROR_DOWNLOADRATE_GETCFG=\u67E5\u8BE2\u4E0B\u8F7D\u9650\u5236\u4FE1\u606F\u5931\u8D25 NET_ERROR_DOWNLOADRATE_SETCFG=\u8BBE\u7F6E\u4E0B\u8F7D\u9650\u5236\u4FE1\u606F\u5931\u8D25 NET_ERROR_SEARCH_TRANSCOM=\u67E5\u8BE2\u4E32\u53E3\u53C2\u6570\u5931\u8D25 NET_ERROR_GETCFG_POINT=\u83B7\u53D6\u9884\u5236\u70B9\u4FE1\u606F\u9519\u8BEF NET_ERROR_SETCFG_POINT=\u8BBE\u7F6E\u9884\u5236\u70B9\u4FE1\u606F\u9519\u8BEF NET_SDK_LOGOUT_ERROR=SDK\u6CA1\u6709\u6B63\u5E38\u767B\u51FA\u8BBE\u5907 NET_ERROR_GET_VEHICLE_CFG=\u83B7\u53D6\u8F66\u8F7D\u914D\u7F6E\u5931\u8D25 NET_ERROR_SET_VEHICLE_CFG=\u8BBE\u7F6E\u8F66\u8F7D\u914D\u7F6E\u5931\u8D25 NET_ERROR_GET_ATM_OVERLAY_CFG=\u83B7\u53D6atm\u53E0\u52A0\u914D\u7F6E\u5931\u8D25 NET_ERROR_SET_ATM_OVERLAY_CFG=\u8BBE\u7F6Eatm\u53E0\u52A0\u914D\u7F6E\u5931\u8D25 NET_ERROR_GET_ATM_OVERLAY_ABILITY=\u83B7\u53D6atm\u53E0\u52A0\u80FD\u529B\u5931\u8D25 NET_ERROR_GET_DECODER_TOUR_CFG=\u83B7\u53D6\u89E3\u7801\u5668\u89E3\u7801\u8F6E\u5DE1\u914D\u7F6E\u5931\u8D25 NET_ERROR_SET_DECODER_TOUR_CFG=\u8BBE\u7F6E\u89E3\u7801\u5668\u89E3\u7801\u8F6E\u5DE1\u914D\u7F6E\u5931\u8D25 NET_ERROR_CTRL_DECODER_TOUR=\u63A7\u5236\u89E3\u7801\u5668\u89E3\u7801\u8F6E\u5DE1\u5931\u8D25 NET_GROUP_OVERSUPPORTNUM=\u8D85\u51FA\u8BBE\u5907\u652F\u6301\u6700\u5927\u7528\u6237\u7EC4\u6570\u76EE NET_USER_OVERSUPPORTNUM=\u8D85\u51FA\u8BBE\u5907\u652F\u6301\u6700\u5927\u7528\u6237\u6570\u76EE NET_ERROR_GET_SIP_CFG=\u83B7\u53D6SIP\u914D\u7F6E\u5931\u8D25 NET_ERROR_SET_SIP_CFG=\u8BBE\u7F6ESIP\u914D\u7F6E\u5931\u8D25 NET_ERROR_GET_SIP_ABILITY=\u83B7\u53D6SIP\u80FD\u529B\u5931\u8D25 NET_ERROR_GET_WIFI_AP_CFG=\u83B7\u53D6WIFIap\u914D\u7F6E\u5931\u8D25 NET_ERROR_SET_WIFI_AP_CFG=\u8BBE\u7F6EWIFIap\u914D\u7F6E\u5931\u8D25 NET_ERROR_GET_DECODE_POLICY=\u83B7\u53D6\u89E3\u7801\u7B56\u7565\u914D\u7F6E\u5931\u8D25 NET_ERROR_SET_DECODE_POLICY=\u8BBE\u7F6E\u89E3\u7801\u7B56\u7565\u914D\u7F6E\u5931\u8D25 NET_ERROR_TALK_REJECT=\u62D2\u7EDD\u5BF9\u8BB2 NET_ERROR_TALK_OPENED=\u5BF9\u8BB2\u88AB\u5176\u4ED6\u5BA2\u6237\u7AEF\u6253\u5F00 NET_ERROR_TALK_RESOURCE_CONFLICIT=\u8D44\u6E90\u51B2\u7A81 NET_ERROR_TALK_UNSUPPORTED_ENCODE=\u4E0D\u652F\u6301\u7684\u8BED\u97F3\u7F16\u7801\u683C\u5F0F NET_ERROR_TALK_RIGHTLESS=\u65E0\u6743\u9650 NET_ERROR_TALK_FAILED=\u8BF7\u6C42\u5BF9\u8BB2\u5931\u8D25 NET_ERROR_GET_MACHINE_CFG=\u83B7\u53D6\u673A\u5668\u76F8\u5173\u914D\u7F6E\u5931\u8D25 NET_ERROR_SET_MACHINE_CFG=\u8BBE\u7F6E\u673A\u5668\u76F8\u5173\u914D\u7F6E\u5931\u8D25 NET_ERROR_GET_DATA_FAILED=\u8BBE\u5907\u65E0\u6CD5\u83B7\u53D6\u5F53\u524D\u8BF7\u6C42\u6570\u636E NET_ERROR_MAC_VALIDATE_FAILED=MAC\u5730\u5740\u9A8C\u8BC1\u5931\u8D25 NET_ERROR_GET_INSTANCE=\u83B7\u53D6\u670D\u52A1\u5668\u5B9E\u4F8B\u5931\u8D25 NET_ERROR_JSON_REQUEST=\u751F\u6210\u7684json\u5B57\u7B26\u4E32\u9519\u8BEF NET_ERROR_JSON_RESPONSE=\u54CD\u5E94\u7684json\u5B57\u7B26\u4E32\u9519\u8BEF NET_ERROR_VERSION_HIGHER=\u534F\u8BAE\u7248\u672C\u4F4E\u4E8E\u5F53\u524D\u4F7F\u7528\u7684\u7248\u672C NET_SPARE_NO_CAPACITY=\u8BBE\u5907\u64CD\u4F5C\u5931\u8D25,\u5BB9\u91CF\u4E0D\u8DB3 NET_ERROR_SOURCE_IN_USE=\u663E\u793A\u6E90\u88AB\u5176\u4ED6\u8F93\u51FA\u5360\u7528 NET_ERROR_REAVE=\u9AD8\u7EA7\u7528\u6237\u62A2\u5360\u4F4E\u7EA7\u7528\u6237\u8D44\u6E90 NET_ERROR_NETFORBID=\u7981\u6B62\u5165\u7F51 NET_ERROR_GETCFG_MACFILTER=\u83B7\u53D6MAC\u8FC7\u6EE4\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_MACFILTER=\u8BBE\u7F6EMAC\u8FC7\u6EE4\u914D\u7F6E\u5931\u8D25 NET_ERROR_GETCFG_IPMACFILTER=\u83B7\u53D6IP/MAC\u8FC7\u6EE4\u914D\u7F6E\u5931\u8D25 NET_ERROR_SETCFG_IPMACFILTER=\u8BBE\u7F6EIP/MAC\u8FC7\u6EE4\u914D\u7F6E\u5931\u8D25 NET_ERROR_OPERATION_OVERTIME=\u5F53\u524D\u64CD\u4F5C\u8D85\u65F6 NET_ERROR_SENIOR_VALIDATE_FAILED=\u9AD8\u7EA7\u6821\u9A8C\u5931\u8D25 NET_ERROR_DEVICE_ID_NOT_EXIST=\u8BBE\u5907ID\u4E0D\u5B58\u5728 NET_ERROR_UNSUPPORTED=\u4E0D\u652F\u6301\u5F53\u524D\u64CD\u4F5C NET_ERROR_PROXY_DLLLOAD=\u4EE3\u7406\u5E93\u52A0\u8F7D\u5931\u8D25 NET_ERROR_PROXY_ILLEGAL_PARAM=\u4EE3\u7406\u7528\u6237\u53C2\u6570\u4E0D\u5408\u6CD5 NET_ERROR_PROXY_INVALID_HANDLE=\u4EE3\u7406\u53E5\u67C4\u65E0\u6548 NET_ERROR_PROXY_LOGIN_DEVICE_ERROR=\u4EE3\u7406\u767B\u5165\u524D\u7AEF\u8BBE\u5907\u5931\u8D25 NET_ERROR_PROXY_START_SERVER_ERROR=\u542F\u52A8\u4EE3\u7406\u670D\u52A1\u5931\u8D25 NET_ERROR_SPEAK_FAILED=\u8BF7\u6C42\u558A\u8BDD\u5931\u8D25 NET_ERROR_NOT_SUPPORT_F6=\u8BBE\u5907\u4E0D\u652F\u6301\u6B64F6\u63A5\u53E3\u8C03\u7528 NET_ERROR_CD_UNREADY=\u5149\u76D8\u672A\u5C31\u7EEA NET_ERROR_DIR_NOT_EXIST=\u76EE\u5F55\u4E0D\u5B58\u5728 NET_ERROR_UNSUPPORTED_SPLIT_MODE=\u8BBE\u5907\u4E0D\u652F\u6301\u7684\u5206\u5272\u6A21\u5F0F NET_ERROR_OPEN_WND_PARAM=\u5F00\u7A97\u53C2\u6570\u4E0D\u5408\u6CD5 NET_ERROR_LIMITED_WND_COUNT=\u5F00\u7A97\u6570\u91CF\u8D85\u8FC7\u9650\u5236 NET_ERROR_UNMATCHED_REQUEST=\u8BF7\u6C42\u547D\u4EE4\u4E0E\u5F53\u524D\u6A21\u5F0F\u4E0D\u5339\u914D NET_RENDER_ENABLELARGEPICADJUSTMENT_ERROR=Render\u5E93\u542F\u7528\u9AD8\u6E05\u56FE\u50CF\u5185\u90E8\u8C03\u6574\u7B56\u7565\u51FA\u9519 NET_ERROR_UPGRADE_FAILED=\u8BBE\u5907\u5347\u7EA7\u5931\u8D25 NET_ERROR_NO_TARGET_DEVICE=\u627E\u4E0D\u5230\u76EE\u6807\u8BBE\u5907 NET_ERROR_NO_VERIFY_DEVICE=\u627E\u4E0D\u5230\u9A8C\u8BC1\u8BBE\u5907 NET_ERROR_CASCADE_RIGHTLESS=\u65E0\u7EA7\u8054\u6743\u9650 NET_ERROR_LOW_PRIORITY=\u4F4E\u4F18\u5148\u7EA7 NET_ERROR_REMOTE_REQUEST_TIMEOUT=\u8FDC\u7A0B\u8BBE\u5907\u8BF7\u6C42\u8D85\u65F6 NET_ERROR_LIMITED_INPUT_SOURCE=\u8F93\u5165\u6E90\u8D85\u51FA\u6700\u5927\u8DEF\u6570\u9650\u5236 NET_ERROR_SET_LOG_PRINT_INFO=\u8BBE\u7F6E\u65E5\u5FD7\u6253\u5370\u5931\u8D25 NET_ERROR_PARAM_DWSIZE_ERROR=\u5165\u53C2\u7684dwsize\u5B57\u6BB5\u51FA\u9519 NET_ERROR_LIMITED_MONITORWALL_COUNT=\u7535\u89C6\u5899\u6570\u91CF\u8D85\u8FC7\u4E0A\u9650 NET_ERROR_PART_PROCESS_FAILED=\u90E8\u5206\u8FC7\u7A0B\u6267\u884C\u5931\u8D25 NET_ERROR_TARGET_NOT_SUPPORT=\u8BE5\u529F\u80FD\u4E0D\u652F\u6301\u8F6C\u53D1 NET_ERROR_VISITE_FILE=\u8BBF\u95EE\u6587\u4EF6\u5931\u8D25 NET_ERROR_DEVICE_STATUS_BUSY=\u8BBE\u5907\u5FD9 NET_USER_PWD_NOT_AUTHORIZED=\u4FEE\u6539\u5BC6\u7801\u65E0\u6743\u9650 NET_USER_PWD_NOT_STRONG=\u5BC6\u7801\u5F3A\u5EA6\u4E0D\u591F NET_ERROR_NO_SUCH_CONFIG=\u6CA1\u6709\u5BF9\u5E94\u7684\u914D\u7F6E NET_ERROR_AUDIO_RECORD_FAILED=\u5F55\u97F3\u5931\u8D25 NET_ERROR_SEND_DATA_FAILED=\u6570\u636E\u53D1\u9001\u5931\u8D25 NET_ERROR_OBSOLESCENT_INTERFACE=\u5E9F\u5F03\u63A5\u53E3 NET_ERROR_INSUFFICIENT_INTERAL_BUF=\u5185\u90E8\u7F13\u51B2\u4E0D\u8DB3 NET_ERROR_NEED_ENCRYPTION_PASSWORD=\u4FEE\u6539\u8BBE\u5907ip\u65F6,\u9700\u8981\u6821\u9A8C\u5BC6\u7801 NET_ERROR_NOSUPPORT_RECORD=\u8BBE\u5907\u4E0D\u652F\u6301\u6B64\u8BB0\u5F55\u96C6 NET_ERROR_SERIALIZE_ERROR=\u6570\u636E\u5E8F\u5217\u5316\u9519\u8BEF NET_ERROR_DESERIALIZE_ERROR=\u6570\u636E\u53CD\u5E8F\u5217\u5316\u9519\u8BEF NET_ERROR_LOWRATEWPAN_ID_EXISTED=\u8BE5\u65E0\u7EBFID\u5DF2\u5B58\u5728 NET_ERROR_LOWRATEWPAN_ID_LIMIT=\u65E0\u7EBFID\u6570\u91CF\u5DF2\u8D85\u9650 NET_ERROR_LOWRATEWPAN_ID_ABNORMAL=\u65E0\u7EBF\u5F02\u5E38\u6DFB\u52A0 NET_ERROR_ENCRYPT=\u52A0\u5BC6\u6570\u636E\u5931\u8D25 NET_ERROR_PWD_ILLEGAL=\u65B0\u5BC6\u7801\u4E0D\u5408\u89C4\u8303 NET_ERROR_DEVICE_ALREADY_INIT=\u8BBE\u5907\u5DF2\u7ECF\u521D\u59CB\u5316 NET_ERROR_SECURITY_CODE=\u5B89\u5168\u7801\u9519\u8BEF NET_ERROR_SECURITY_CODE_TIMEOUT=\u5B89\u5168\u7801\u8D85\u51FA\u6709\u6548\u671F NET_ERROR_GET_PWD_SPECI=\u83B7\u53D6\u5BC6\u7801\u89C4\u8303\u5931\u8D25 NET_ERROR_NO_AUTHORITY_OF_OPERATION=\u65E0\u6743\u9650\u8FDB\u884C\u8BE5\u64CD\u4F5C NET_ERROR_DECRYPT=\u89E3\u5BC6\u6570\u636E\u5931\u8D25 NET_ERROR_2D_CODE=2Dcode\u6821\u9A8C\u5931\u8D25 NET_ERROR_INVALID_REQUEST=\u975E\u6CD5\u7684RPC\u8BF7\u6C42 NET_ERROR_PWD_RESET_DISABLE=\u5BC6\u7801\u91CD\u7F6E\u529F\u80FD\u5DF2\u5173\u95ED NET_ERROR_PLAY_PRIVATE_DATA=\u663E\u793A\u79C1\u6709\u6570\u636E\uFF0C\u6BD4\u5982\u89C4\u5219\u6846\u7B49\u5931\u8D25 NET_ERROR_ROBOT_OPERATE_FAILED=\u673A\u5668\u4EBA\u64CD\u4F5C\u5931\u8D25 NET_ERROR_PHOTOSIZE_EXCEEDSLIMIT=\u56FE\u7247\u5927\u5C0F\u8D85\u9650 NET_ERROR_USERID_INVALID=\u7528\u6237ID\u4E0D\u5B58\u5728 NET_ERROR_EXTRACTFEATURE_FAILED=\u7167\u7247\u7279\u5F81\u503C\u63D0\u53D6\u5931\u8D25 NET_ERROR_PHOTO_EXIST=\u7167\u7247\u5DF2\u5B58\u5728 NET_ERROR_PHOTO_OVERFLOW=\u7167\u7247\u6570\u91CF\u8D85\u8FC7\u4E0A\u9650 NET_ERROR_CHANNEL_ALREADY_OPENED=\u901A\u9053\u5DF2\u7ECF\u6253\u5F00 NET_ERROR_CREATE_SOCKET=\u521B\u5EFA\u5957\u63A5\u5B57\u5931\u8D25 NET_ERROR_CHANNEL_NUM=\u901A\u9053\u53F7\u9519\u8BEF NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_ID_EXCEED=\u7EC4ID\u8D85\u8FC7\u6700\u5927\u503C # RealPlay Info START_REALPLAY=\u5F00\u59CB\u9884\u89C8 STOP_REALPLAY=\u505C\u6B62\u9884\u89C8 ATTACH=\u667A\u80FD\u8BA2\u9605 DETACH=\u53D6\u6D88\u8BA2\u9605 REALPLAY_SUCCEED=\u5B9E\u65F6\u9884\u89C8\u6210\u529F REALPLAY_FAILED=\u5B9E\u65F6\u9884\u89C8\u5931\u8D25 CHN=\u901A\u9053 CHANNEL=\u901A\u9053 STREAM_TYPE=\u7801\u6D41 MASTER_AND_SUB_STREAM=\u4E3B\u8F85\u7801\u6D41 MASTER_STREAM=\u4E3B\u7801\u6D41 SUB_STREAM=\u8F85\u7801\u6D41 # Capture Picture LOCAL_CAPTURE=\u672C\u5730\u6293\u56FE REMOTE_CAPTURE=\u8FDC\u7A0B\u6293\u56FE TIMER_CAPTURE=\u5B9A\u65F6\u6293\u56FE STOP_CAPTURE=\u505C\u6B62\u6293\u56FE INTERVAL=\u95F4\u9694 TIME_INTERVAL_ILLEGAL=\u65F6\u95F4\u95F4\u9694\u8F93\u5165\u975E\u6CD5 PLEASE_START_REALPLAY=\u8BF7\u5148\u6253\u5F00\u5B9E\u65F6\u9884\u89C8 # PTZ Info PTZ_CONTROL=\u4E91\u53F0\u63A7\u5236 LEFT_UP=\u5DE6\u4E0A UP=\u4E0A RIGHT_UP=\u53F3\u4E0A LEFT=\u5DE6 RIGHT=\u53F3 LEFT_DOWN=\u5DE6\u4E0B DOWN=\u4E0B RIGHT_DOWN=\u53F3\u4E0B ZOOM_ADD=\u53D8\u500D+ ZOOM_DEC=\u53D8\u500D- FOCUS_ADD=\u8C03\u7126+ FOCUS_DEC=\u8C03\u7126- IRIS_ADD=\u5149\u5708+ IRIS_DEC=\u5149\u5708- SPEED=\u901F\u7387 #ITS EVENT_INFO=\u4E8B\u4EF6\u4FE1\u606F EVENT_NAME=\u4E8B\u4EF6\u540D\u79F0 EVENT_TIME=\u4E8B\u4EF6\u65F6\u95F4 EVENT_PICTURE=\u4E8B\u4EF6\u4EE5\u53CA\u56FE\u7247 PLATE_PICTURE=\u8F66\u724C\u56FE LICENSE_PLATE=\u8F66\u724C\u53F7 PLATE_TYPE=\u8F66\u724C\u7C7B\u578B PLATE_COLOR=\u8F66\u724C\u989C\u8272 VEHICLE_TYPE=\u8F66\u8F86\u7C7B\u578B VEHICLE_SIZE=\u8F66\u8F86\u5927\u5C0F VEHICLE_COLOR=\u8F66\u8F86\u989C\u8272 FILE_COUNT=\u6587\u4EF6\u603B\u6570 FILE_INDEX=\u6587\u4EF6\u7F16\u53F7 GROUP_ID=\u7EC4ID ILLEGAL_PLACE=\u8FDD\u6CD5\u5730\u70B9 LANE_NUMBER=\u8F66\u9053\u53F7 MANUAL_CAPTURE=\u624B\u52A8\u6293\u62CD OPEN_STROBE=\u51FA\u5165\u53E3\u5F00\u95F8 CLOSE_STROBE=\u51FA\u5165\u53E3\u5173\u95F8 INDEX=\u5E8F\u53F7 OPERATE=\u64CD\u4F5C FUNCTION=\u57FA\u672C UNDEFINED_COLOR=\u672A\u5B9A\u4E49\u989C\u8272 BLACK=\u9ED1\u8272 WHITE=\u767D\u8272 RED=\u7EA2\u8272 BLUE=\u84DD\u8272 GREEN=\u7EFF\u8272 YELLOW=\u9EC4\u8272 GRAY=\u7070\u8272 ORANGE=\u6A59\u8272 LIGHT_DUTY=\u5C0F\u578B\u8F66 MEDIUM=\u4E2D\u578B\u8F66 OVER_SIZE=\u5927\u578B\u8F66 MINI_SIZE=\u5FAE\u578B\u8F66 LARGE_SIZE=\u957F\u8F66 NO_PLATENUMBER=\u65E0\u8F66\u724C MANUALSNAP_SUCCEED=\u624B\u52A8\u6293\u62CD\u6210\u529F MANUALSNAP_FAILED=\u624B\u52A8\u6293\u62CD\u5931\u8D25 OPEN_STROBE_SUCCEED=\u5F00\u95F8\u6210\u529F OPEN_STROBE_FAILED=\u5F00\u95F8\u5931\u8D25 CLOSE_STROBE_SUCCEED=\u5173\u95F8\u6210\u529F CLOSE_STROBE_FAILED=\u5173\u95F8\u5931\u8D25 EVENT_IVS_TRAFFICJUNCTION=\u4EA4\u901A\u5361\u53E3 EVENT_IVS_TRAFFIC_RUNREDLIGHT=\u95EF\u7EA2\u706F EVENT_IVS_TRAFFIC_OVERLINE=\u538B\u8F66\u9053\u7EBF EVENT_IVS_TRAFFIC_RETROGRADE=\u9006\u884C EVENT_IVS_TRAFFIC_TURNLEFT=\u8FDD\u7AE0\u5DE6\u8F6C EVENT_IVS_TRAFFIC_TURNRIGHT=\u8FDD\u7AE0\u53F3\u8F6C EVENT_IVS_TRAFFIC_UTURN=\u8FDD\u7AE0\u6389\u5934 EVENT_IVS_TRAFFIC_OVERSPEED=\u8D85\u901F EVENT_IVS_TRAFFIC_UNDERSPEED=\u4F4E\u901F EVENT_IVS_TRAFFIC_PARKING=\u8FDD\u7AE0\u505C\u8F66 EVENT_IVS_TRAFFIC_WRONGROUTE=\u4E0D\u6309\u8F66\u9053\u884C\u9A76 EVENT_IVS_TRAFFIC_CROSSLANE=\u8FDD\u7AE0\u53D8\u9053 EVENT_IVS_TRAFFIC_OVERYELLOWLINE=\u538B\u9EC4\u7EBF EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE=\u9EC4\u724C\u8F66\u5360\u9053 EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY=\u6591\u9A6C\u7EBF\u884C\u4EBA\u4F18\u5148 EVENT_IVS_TRAFFIC_MANUALSNAP=\u4EA4\u901A\u624B\u52A8\u6293\u62CD EVENT_IVS_TRAFFIC_VEHICLEINROUTE=\u6709\u8F66\u5360\u9053 EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE=\u5360\u7528\u516C\u4EA4\u8F66\u9053 EVENT_IVS_TRAFFIC_BACKING=\u8FDD\u7AE0\u5012\u8F66 EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING=\u8F66\u4F4D\u6709\u8F66 EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING=\u8F66\u4F4D\u65E0\u8F66 EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT=\u4EA4\u901A\u672A\u7CFB\u5B89\u5168\u5E26 # DownLoad Info DOWNLOAD_RECORD_BYTIME=\u6309\u65F6\u95F4\u4E0B\u8F7D DOWNLOAD_RECORD_BYFILE=\u6309\u6587\u4EF6\u4E0B\u8F7D QUERY=\u67E5\u8BE2 DOWNLOAD=\u4E0B\u8F7D STOP_DOWNLOAD=\u505C\u6B62\u4E0B\u8F7D START_TIME=\u5F00\u59CB\u65F6\u95F4 END_TIME=\u7ED3\u675F\u65F6\u95F4 RECORD_TYPE=\u5F55\u50CF\u7C7B\u578B GENERAL_RECORD=\u666E\u901A\u5F55\u50CF ALARM_RECORD=\u62A5\u8B66\u5F55\u50CF MOTION_DETECTION=\u79FB\u52A8\u68C0\u6D4B\u5F55\u50CF CARD_NUMBER_RECORD=\u5361\u53F7\u5F55\u50CF INTELLIGENT_DETECTION=\u667A\u80FD\u5F55\u50CF POS_RECORD=POS\u5F55\u50CF QUERY_RECORD_IS_NOT_EXIST=\u67E5\u8BE2\u5F55\u50CF\u4E0D\u5B58\u5728 PLEASE_CHECK_RECORD_TIME=\u8BF7\u68C0\u67E5\u5F55\u50CF\u65F6\u95F4 PLEASE_SELECT_TIME_AGAIN=\u8BF7\u91CD\u65B0\u9009\u62E9\u65F6\u95F4\uFF0C\u6700\u5927\u65F6\u95F4\u5DEE6\u5C0F\u65F6 DOWNLOAD_COMPLETED=\u4E0B\u8F7D\u7ED3\u675F PLEASE_FIRST_QUERY_RECORD=\u8BF7\u5148\u67E5\u8BE2\u5F55\u50CF PLEASE_FIRST_SELECT_ROW_WITH_DATA=\u8BF7\u5148\u9009\u62E9\u6709\u5F55\u50CF\u7684\u4E00\u884C # Time Set YEAR=\u5E74 MONTH=\u6708 DAY=\u65E5 HOUR=\u65F6 MINUTE=\u5206 SECOND=\u79D2 CONFIRM=\u786E\u5B9A CANCEL=\u53D6\u6D88 DATE_CHOOSER=\u65F6\u95F4\u9009\u62E9 MONDAY=\u661F\u671F\u4E00 TUESDAY=\u661F\u671F\u4E8C WEDNESDAY=\u661F\u671F\u4E09 THURSDAY=\u661F\u671F\u56DB FRIDAY=\u661F\u671F\u4E94 SATURDAY=\u661F\u671F\u516D SUNDAY=\u661F\u671F\u65E5 # Talk TRANSMIT_TYPE=\u8F6C\u53D1\u7C7B\u578B LOCAL_TRANSMIT_TYPE=\u672C\u5730\uFF08\u4E0D\u8F6C\u53D1\uFF09 REMOTE_TRANSMIT_TYPE=\u8FDC\u7A0B\uFF08\u8F6C\u53D1\uFF09 TRANSMIT_CHANNEL=\u8F6C\u53D1\u901A\u9053 START_TALK=\u5F00\u59CB\u901A\u8BDD STOP_TALK=\u7ED3\u675F\u901A\u8BDD TALK_FAILED=\u901A\u8BDD\u5931\u8D25 # DeviceSearchAndInt DEVICESEARCH_OPERATE=\u8BBE\u5907\u641C\u7D22\u64CD\u4F5C DEVICESEARCH_RESULT=\u8BBE\u5907\u641C\u7D22\u7ED3\u679C DEVICEINIT=\u8BBE\u5907\u521D\u59CB\u5316 DEVICESEARCH=\u8BBE\u5907\u641C\u7D22 DEVICE_POINT_TO_POINT_SEARCH=\u8BBE\u5907IP\u70B9\u5BF9\u70B9\u641C\u7D22 START_SEARCH=\u5F00\u59CB\u641C\u7D22 STOP_SEARCH=\u505C\u6B62\u641C\u7D22 START_IP=\u8D77\u59CBIP END_IP=\u7ED3\u675FIP DEVICE_TYPE=\u8BBE\u5907\u7C7B\u578B MAC=MAC SN=\u5E8F\u5217\u53F7 DEVICE_INIT_STATE=\u521D\u59CB\u5316\u72B6\u6001 INIT_PASSWD=\u521D\u59CB\u5316\u5BC6\u7801 PHONE=\u624B\u673A\u53F7 MAIL=\u90AE\u7BB1 IP_VERSION=IP\u7248\u672C SUB_MASK=\u5B50\u7F51\u63A9\u7801 GETWAY=\u7F51\u5173 DETAIL_TYPE=\u8BE6\u7EC6\u7C7B\u578B HTTP_PORT=HTTP\u7AEF\u53E3\u53F7 LOCAL_IP=\u672C\u5730ip CONFIRM_PASSWORD=\u786E\u8BA4\u5BC6\u7801 OLD_DEVICE=\u8001\u8BBE\u5907 DONOT_SUPPORT_INITIALIZATION=\u4E0D\u652F\u6301\u521D\u59CB\u5316 NOT_INITIALIZED=\u672A\u521D\u59CB\u5316 INITIALIZED=\u5DF2\u521D\u59CB\u5316 THE_IP_CONTROL_SCOPE=\u8303\u56F4\u592A\u5927\uFF0C\u8BF7\u63A7\u5236\u57281000\u4E2A\u4E4B\u95F4 PLEASE_FIRST_SELECT_INITIALIZED_DEVICE=\u8BF7\u5148\u9009\u62E9\u9700\u8981\u521D\u59CB\u5316\u7684\u8BBE\u5907 PLEASE_INPUT_PHONE=\u8BF7\u8F93\u5165\u624B\u673A\u53F7 PLEASE_INPUT_MAIL=\u8BF7\u8F93\u5165\u90AE\u7BB1 INCONSISTENT=\u5BC6\u7801\u548C\u786E\u8BA4\u5BC6\u7801\u4E0D\u4E00\u81F4 PLEASE_CHECK_IP=\u8BF7\u68C0\u67E5IP SEARCHING_WAITING=\u6B63\u5728\u641C\u7D22\uFF0C\u8BF7\u7B49\u5F85\u641C\u7D22\u7ED3\u675F START_LISTEN=\u5F00\u59CB\u76D1\u542C STOP_LISTEN=\u505C\u6B62\u76D1\u542C SHOW_ALARM_EVENT=\u62A5\u8B66\u4E8B\u4EF6\u7ED3\u679C\u4FE1\u606F ALARM_LISTEN_FAILED=\u62A5\u8B66\u76D1\u542C\u5931\u8D25 ALARM_MESSAGE=\u62A5\u8B66\u4FE1\u606F EXTERNAL_ALARM=\u5916\u90E8\u62A5\u8B66 MOTION_ALARM=\u52A8\u6001\u68C0\u6D4B\u62A5\u8B66 VIDEOLOST_ALARM=\u89C6\u9891\u4E22\u5931\u62A5\u8B66 SHELTER_ALARM=\u89C6\u9891\u906E\u6321\u62A5\u8B66 DISKFULL_ALARM=\u786C\u76D8\u6EE1\u62A5\u8B66 DISKERROR_ALARM=\u574F\u786C\u76D8\u62A5\u8B66 START=\u5F00\u59CB STOP=\u7ED3\u675F CURRENT_TIME=\u5F53\u524D\u65F6\u95F4 DEVICE_REBOOT=\u8BBE\u5907\u91CD\u542F SYNCHRONIZE_TIME=\u65F6\u95F4\u540C\u6B65 REBOOT=\u91CD\u542F SET_TIME=\u8BBE\u7F6E\u65F6\u95F4 GET_TIME=\u83B7\u53D6\u65F6\u95F4 REBOOT_TIPS=\u60A8\u786E\u5B9A\u8981\u91CD\u542F\u5417\uFF1F OPERATE_SUCCESS=\u64CD\u4F5C\u6210\u529F #FaceRecognition FACE_GROUP_ID=\u4EBA\u8138\u5E93ID FACE_GROUP_NAME=\u4EBA\u8138\u5E93\u540D\u79F0 PERSON_COUNT=\u4EBA\u5458\u4E2A\u6570 GROUP_OPERATE=\u4EBA\u8138\u5E93\u64CD\u4F5C PERSON_OPERATE=\u4EBA\u5458\u64CD\u4F5C FACE_RECOGNITION_EVENT=\u76EE\u6807\u8BC6\u522B\u4E8B\u4EF6 FACE_DETECT_EVENT=\u4EBA\u8138\u68C0\u6D4B\u4E8B\u4EF6 GLOBAL_PICTURE=\u5168\u666F\u56FE PERSON_PICTURE=\u4EBA\u8138\u56FE CANDIDATE_PICTURE=\u5019\u9009\u4EBA\u56FE TIME=\u65F6\u95F4 SEX=\u6027\u522B AGE=\u5E74\u9F84 COLOR= EYE=\u773C\u775B MOUTH=\u5634\u5DF4 MASK=\u53E3\u7F69 BEARD=\u80E1\u5B50 MALE=\u7537 FEMALE=\u5973 ID_CARD=\u8EAB\u4EFD\u8BC1 OFFICE_CARD=\u519B\u5B98\u8BC1 PASSPORT=\u62A4\u7167 UNIDENTIFIED=\u672A\u8BC6\u522B HAVE_BEARD=\u6709\u80E1\u5B50 NO_BEARD=\u6CA1\u80E1\u5B50 OPEN_MOUTH=\u5F20\u5634 CLOSE_MOUTH=\u95ED\u5634 YELLOW_COLOR= BLACK_COLOR= WHITE_COLOR= OPEN_EYE=\u7741\u773C CLOSE_EYE=\u95ED\u773C SMILE=\u5FAE\u7B11 ANGER=\u6124\u6012 SADNESS=\u60B2\u4F24 DISGUST=\u538C\u6076 FEAR=\u5BB3\u6015 SURPRISE=\u60CA\u8BB6 NEUTRAL=\u6B63\u5E38 LAUGH=\u5927\u7B11 WEAR_MASK=\u6234\u53E3\u7F69 NO_MASK=\u6CA1\u6234\u53E3\u7F69 WEAR_GLASSES=\u6234\u773C\u955C NO_GLASSES=\u4E0D\u6234\u773C\u955C UNKNOW=\u672A\u77E5 UNLIMITED=\u4E0D\u9650 NAME=\u59D3\u540D BIRTHDAY=\u751F\u65E5 ID_NO=\u8BC1\u4EF6\u53F7 ID_TYPE=\u8BC1\u4EF6\u7C7B\u578B SIMILARITY=\u76F8\u4F3C\u5EA6 UID=\u4EBA\u5458\u6807\u8BC6\u7B26 STRANGER=\u964C\u751F\u4EBA GLASSES=\u773C\u955C PICTURE_PATH=\u56FE\u7247\u8DEF\u5F84 FACE_LIBRARY_ID=\u4EBA\u8138\u5E93ID FACE_LIBRARY_NAME=\u4EBA\u8138\u5E93\u540D\u79F0 ADD=\u6DFB\u52A0 MODIFY=\u4FEE\u6539 DELETE=\u5220\u9664 FRESH=\u5237\u65B0 ADD_GROUP=\u6DFB\u52A0\u4EBA\u8138\u5E93 MODIFY_GROUP=\u4FEE\u6539\u4EBA\u8138\u5E93 DEL_GROUP=\u5220\u9664\u4EBA\u8138\u5E93 DISPOSITION=\u5E03\u63A7 DEL_DISPOSITION=\u64A4\u63A7 FIND_CONDITION=\u67E5\u627E\u6761\u4EF6 FIND_PERSON=\u67E5\u627E\u4EBA\u5458 ADD_PERSON=\u6DFB\u52A0\u4EBA\u5458 MODIFY_PERSON=\u4FEE\u6539\u4EBA\u5458 DEL_PERSON=\u5220\u9664\u4EBA\u5458 PREVIOUSPAGE=\u4E0A\u4E00\u9875 LASTPAGE=\u4E0B\u4E00\u9875 SELECT_PICTURE=\u9009\u62E9\u56FE\u7247 SEARCH_BY_PIC=\u4EE5\u56FE\u641C\u56FE DOWNLOAD_QUERY_PICTURE=\u4E0B\u8F7D\u67E5\u8BE2\u5230\u7684\u56FE\u7247 FACE_LIBRARY=\u4EBA\u8138\u5E93 HISTORY_LIBRARY=\u5386\u53F2\u5E93 CHOOSE_FACE_PIC=\u8BF7\u9009\u62E9\u4EBA\u8138\u56FE\u7247 EVENT_TYPE=\u4E8B\u4EF6\u7C7B\u578B PAGES_NUMBER=\u9875\u6570 SIMILARITY_RANGE=\u76F8\u4F3C\u5EA6\u8303\u56F4[0, 100] PLEASE_INPUT_GROUPNAME=\u8BF7\u8F93\u5165\u4EBA\u8138\u5E93\u540D\u79F0 PLEASE_SELECT_GROUP=\u8BF7\u9009\u62E9\u4EBA\u8138\u5E93 PLEASE_SELECT_PERSON=\u8BF7\u9009\u62E9\u4EBA\u5458 PLEASE_ADD_DISPOSITION_INFO=\u8BF7\u6DFB\u52A0\u5E03\u63A7\u4FE1\u606F PLEASE_SELECT_DEL_DISPOSITION_INFO=\u8BF7\u9009\u62E9\u64A4\u63A7\u4FE1\u606F #AutoRegister AUTOREGISTER_LISTEN=\u4E3B\u52A8\u6CE8\u518C\u76D1\u542C DEVICE_CONFIG=\u8BBE\u5907\u914D\u7F6E DEVICE_LIST=\u8BBE\u5907\u5217\u8868 DEVICE_MANAGER=\u8BBE\u5907\u7BA1\u7406 ADD_DEVICE=\u6DFB\u52A0\u8BBE\u5907 MODIFY_DEVICE=\u4FEE\u6539\u8BBE\u5907 DELETE_DEVICE=\u5220\u9664\u8BBE\u5907 CLEAR_DEVICE=\u6E05\u7A7A\u8BBE\u5907 IMPORT_DEVICE=\u5BFC\u5165\u8BBE\u5907 EXPORT_DEVICE=\u5BFC\u51FA\u8BBE\u5907 DEVICE_ID=\u8BBE\u5907ID ENABLE=\u542F\u7528 REGISTER_ADDRESS=\u6CE8\u518C\u5730\u5740 REGISTER_PORT=\u6CE8\u518C\u7AEF\u53E3\u53F7 GET=\u83B7\u53D6 SET=\u8BBE\u7F6E RECORD=\u5F55\u97F3 DEVICE_LOGIN=\u8BBE\u5907\u5DF2\u767B\u5F55 ALREADY_EXISTED=\u5DF2\u5B58\u5728 ALREADY_EXISTED_WHETHER_OR_NOT_TO_COVER=\u5DF2\u5B58\u5728\uFF0C\u662F\u5426\u8986\u76D6(\u5426\uFF0C\u4E0D\u4F1A\u5BFC\u51FA) FILE_OPEN_PLEASE_CLOSE_FILE=\u6587\u4EF6\u88AB\u6253\u5F00\uFF0C\u8BF7\u5148\u5173\u95ED\u6587\u4EF6 IMPORT_COMPLETION=\u5BFC\u5165\u5B8C\u6210 EXPORT_COMPLETION=\u5BFC\u51FA\u5B8C\u6210 FILE_NOT_EXIST=\u6587\u4EF6\u4E0D\u5B58\u5728 PLEASE_INPUT=\u8BF7\u8F93\u5165 MAX_SUPPORT_100=\u6700\u5927\u652F\u6301100\u4E2A #Attendance ATTENDANCE=\u8003\u52E4\u673A USER_ID=\u7528\u6237ID USER_NAME=\u7528\u6237\u540D CARD_NO=\u5361\u53F7 QUERY_CONDITION=\u67E5\u8BE2\u6761\u4EF6 USER_OPERATE=\u7528\u6237\u64CD\u4F5C FINGERPRINT_OPERATE=\u6307\u7EB9\u64CD\u4F5C OPERATE_BY_USER_ID=\u901A\u8FC7\u7528\u6237ID\u64CD\u4F5C\u6307\u7EB9 OPERATE_BY_FINGERPRINT_ID=\u901A\u8FC7\u6307\u7EB9ID\u64CD\u4F5C\u6307\u7EB9 FINGERPRINT_ID=\u6307\u7EB9ID SEARCH=\u67E5\u627E SEARCH_FINGERPRINT=\u67E5\u627E\u6307\u7EB9 ADD_FINGERPRINT=\u6DFB\u52A0\u6307\u7EB9 DELETE_FINGERPRINT=\u5220\u9664\u6307\u7EB9 SUBSCRIBE=\u8BA2\u9605 UNSUBSCRIBE=\u53D6\u6D88\u8BA2\u9605 USER_LIST=\u7528\u6237\u5217\u8868 NEXT_PAGE=\u4E0B\u4E00\u9875 USER_INFO=\u7528\u6237\u4FE1\u606F DOOROPEN_METHOD=\u5F00\u95E8\u65B9\u5F0F FINGERPRINT=\u6307\u7EB9 FINGERPRINT_INFO=\u6307\u7EB9\u4FE1\u606F FINGERPRINT_DATA=\u6307\u7EB9\u6570\u636E CARD=\u5361 DELETE_FINGERPRINT_PROMPT=\u5C06\u4F1A\u5220\u9664\u8BE5\u7528\u6237\u4E0B\u6240\u6709\u6307\u7EB9\u6570\u636E SUBSCRIBE_FAILED=\u8BA2\u9605\u5931\u8D25 FINGERPRINT_ID_ILLEGAL=\u6307\u7EB9ID\u975E\u6CD5 FINGERPRINT_COLLECTION=\u6307\u7EB9\u91C7\u96C6 START_COLLECTION=\u5F00\u59CB\u91C7\u96C6 STOP_COLLECTION=\u505C\u6B62\u91C7\u96C6 IN_THE_COLLECTION=\u91C7\u96C6\u4E2D... COLLECTION_COMPLETED=\u91C7\u96C6\u5B8C\u6210 COLLECTION_FAILED=\u91C7\u96C6\u5931\u8D25 FINGERPRINT_ID_NOT_EXIST=\u6307\u7EB9ID\u4E0D\u5B58\u5728 USER_ID_EXCEED_LENGTH=\u7528\u6237ID\u8D85\u8FC7\u6700\u5927\u957F\u5EA6 USER_NAME_EXCEED_LENGTH=\u7528\u6237\u540D\u8D85\u8FC7\u6700\u5927\u957F\u5EA6 CARD_NO_EXCEED_LENGTH=\u5361\u53F7\u8D85\u8FC7\u6700\u5927\u957F\u5EA6 CARD_NAME_EXCEED_LENGTH=\u5361\u540D\u8D85\u8FC7\u6700\u5927\u9650\u5236 CARD_PASSWD_EXCEED_LENGTH=\u5361\u5BC6\u7801\u8D85\u8FC7\u6700\u5927\u9650\u5236 #Gate GATE=\u4EBA\u8138\u5F00\u95E8 CARD_OPERATE=\u5361\u64CD\u4F5C CARD_INFO=\u5361\u4FE1\u606F CARD_MANAGER=\u5361\u7BA1\u7406 CLEAR=\u6E05\u7A7A OPEN_STATUS=\u5F00\u95E8\u72B6\u6001 OPEN_METHOD=\u5F00\u95E8\u65B9\u5F0F TEMPERATURE=\u6E29\u5EA6 MASK_STATUS=\u53E3\u7F69\u72B6\u6001 CARD_UNKNOW=\u672A\u77E5\u5361 CARD_GENERAL=\u4E00\u822C\u5361 CARD_VIP=VIP\u5361 CARD_GUEST=\u6765\u5BBE\u5361 CARD_PATROL=\u5DE1\u903B\u5361 CARD_BACKLIST=\u7981\u6B62\u540D\u5355\u5361 CARD_COERCE=\u80C1\u8FEB\u5361 CARD_POLLING=\u5DE1\u68C0\u5361 CARD_MOTHERCARD=\u6BCD\u5361 STATE_UNKNOWN=\u672A\u77E5 STATE_NORMAL=\u6B63\u5E38 STATE_LOSE=\u4E22\u5931 STATE_LOGOFF=\u6CE8\u9500 STATE_FREEZE=\u51BB\u7ED3 STATE_ARREARS=\u6B20\u8D39 STATE_OVERDUE=\u903E\u671F STATE_PREARREARS=\u9884\u6B20\u8D39 RECORD_NO=\u8BB0\u5F55\u96C6\u7F16\u53F7 CARD_NAME=\u5361\u540D CARD_STATUS=\u5361\u72B6\u6001 CARD_PASSWORD=\u5361\u5BC6\u7801 CARD_TYPE=\u5361\u7C7B\u578B CARD_NUM=\u8BC1\u4EF6\u53F7 USE_TIMES=\u4F7F\u7528\u6B21\u6570 IS_FIRST_ENTER=\u662F\u5426\u9996\u5361 IS_VALID=\u662F\u5426\u6709\u6548 VALID_PERIOD=\u6709\u6548\u671F VALID_START_TIME=\u6709\u6548\u5F00\u59CB\u65F6\u95F4 VALID_END_TIME=\u6709\u6548\u7ED3\u675F\u65F6\u95F4 FIRST_ENTER=\u9996\u5361 NO_FIRST_ENTER=\u975E\u9996\u5361 VALID=\u6709\u6548 INVALID=\u65E0\u6548 PLEASE_SELECT_CARD=\u8BF7\u9009\u62E9\u5361 PLEASE_INPUT_CARDNO=\u8BF7\u8F93\u5165\u5361\u53F7 PLEASE_INPUT_USERID=\u8BF7\u8F93\u5165\u7528\u6237ID WANT_CLEAR_ALL_INFO=\u4F60\u662F\u5426\u60F3\u8981\u6E05\u7A7A\u6240\u6709\u4FE1\u606F? ADD_CARD_INDO_FAILED=\u6DFB\u52A0\u5361\u4FE1\u606F\u5931\u8D25 ADD_CARD_INFO_AND_PERSON_PICTURE_SUCCEED=\u6DFB\u52A0\u5361\u4FE1\u606F\u548C\u4EBA\u8138\u6210\u529F ADD_CARD_INFO_SUCCEED_BUT_ADD_PERSON_PICTURE_FAILED=\u6DFB\u52A0\u5361\u4FE1\u606F\u6210\u529F\uFF0C\u4F46\u6DFB\u52A0\u4EBA\u8138\u5931\u8D25 CARD_EXISTED_ADD_PERSON_PICTURE_SUCCEED=\u5361\u4FE1\u606F\u5DF2\u5B58\u5728\uFF0C\u6DFB\u52A0\u4EBA\u8138\u6210\u529F MODIFY_CARD_INFO_SUCCEED=\u4FEE\u6539\u5361\u4FE1\u606F\u6210\u529F MODIFY_CARD_INFO_FAILED=\u4FEE\u6539\u5361\u4FE1\u606F\u5931\u8D25 MODIFY_CARD_INFO_AND_PERSON_PICTURE_SUCCEED=\u4FEE\u6539\u5361\u4FE1\u606F\u548C\u4EBA\u8138\u6210\u529F MODIFY_CARD_INFO_SUCCEED_BUT_MODIFY_PERSON_PICTURE_FAILED=\u4FEE\u6539\u5361\u4FE1\u606F\u6210\u529F\uFF0C\u4F46\u4FEE\u6539\u4EBA\u8138\u5931\u8D25 NET_ACCESS_DOOROPEN_METHOD_UNKNOWN=\u672A\u77E5 NET_ACCESS_DOOROPEN_METHOD_PWD_ONLY=\u5BC6\u7801\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_CARD=\u5237\u5361\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_CARD_FIRST=\u5148\u5237\u5361\u540E\u5BC6\u7801\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_PWD_FIRST=\u5148\u5BC6\u7801\u540E\u5237\u5361\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_REMOTE=\u8FDC\u7A0B\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_BUTTON=\u5F00\u9501\u6309\u94AE\u8FDB\u884C\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT=\u6307\u7EB9\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_PWD_CARD_FINGERPRINT=\u5BC6\u7801+\u5237\u5361+\u6307\u7EB9\u7EC4\u5408\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_PWD_FINGERPRINT=\u5BC6\u7801+\u6307\u7EB9\u7EC4\u5408\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_CARD_FINGERPRINT=\u5237\u5361+\u6307\u7EB9\u7EC4\u5408\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_PERSONS=\u591A\u4EBA\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_KEY=\u94A5\u5319\u5F00\u95E8 NET_ACCESS_DOOROPEN_METHOD_COERCE_PWD=\u80C1\u8FEB\u5BC6\u7801\u5F00\u95E8 NET_ACCESS_DOOROPEN_METHOD_QRCODE=\u4E8C\u7EF4\u7801\u5F00\u95E8 NET_ACCESS_DOOROPEN_METHOD_FACE_RECOGNITION=\u76EE\u6807\u8BC6\u522B\u5F00\u95E8 NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD=\u4EBA\u8BC1\u5BF9\u6BD4 NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_AND_IDCARD=\u8EAB\u4EFD\u8BC1+ \u4EBA\u8BC1\u6BD4\u5BF9 NET_ACCESS_DOOROPEN_METHOD_BLUETOOTH=\u84DD\u7259\u5F00\u95E8 NET_ACCESS_DOOROPEN_METHOD_CUSTOM_PASSWORD=\u4E2A\u6027\u5316\u5BC6\u7801\u5F00\u95E8 NET_ACCESS_DOOROPEN_METHOD_USERID_AND_PWD=UserID+\u5BC6\u7801 NET_ACCESS_DOOROPEN_METHOD_FACE_AND_PWD=\u4EBA\u8138+\u5BC6\u7801\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_PWD=\u6307\u7EB9+\u5BC6\u7801\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE=\u6307\u7EB9+\u4EBA\u8138\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE=\u5237\u5361+\u4EBA\u8138\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_FACE_OR_PWD=\u4EBA\u8138\u6216\u5BC6\u7801\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_PWD=\u6307\u7EB9\u6216\u5BC6\u7801\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE=\u6307\u7EB9\u6216\u4EBA\u8138\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE=\u5237\u5361\u6216\u4EBA\u8138\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT=\u5237\u5361\u6216\u6307\u7EB9\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE_AND_PWD=\u6307\u7EB9+\u4EBA\u8138+\u5BC6\u7801\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE_AND_PWD=\u5237\u5361+\u4EBA\u8138+\u5BC6\u7801\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_PWD=\u5237\u5361+\u6307\u7EB9+\u5BC6\u7801\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_CARD_AND_PWD_AND_FACE=\u5361+\u6307\u7EB9+\u4EBA\u8138\u7EC4\u5408\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE_OR_PWD=\u6307\u7EB9\u6216\u4EBA\u8138\u6216\u5BC6\u7801 NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE_OR_PWD =\u5361\u6216\u4EBA\u8138\u6216\u5BC6\u7801\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE=\u5361\u6216\u6307\u7EB9\u6216\u4EBA\u8138\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_FACE_AND_PWD=\u5361+\u6307\u7EB9+\u4EBA\u8138+\u5BC6\u7801\u7EC4\u5408\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE_OR_PWD=\u5361\u6216\u6307\u7EB9\u6216\u4EBA\u8138\u6216\u5BC6\u7801\u5F00\u9501 NET_ACCESS_DOOROPEN_METHOD_FACEIPCARDANDIDCARD_OR_CARD_OR_FACE=(\u8EAB\u4EFD\u8BC1+\u4EBA\u8BC1\u6BD4\u5BF9)\u6216 \u5237\u5361 \u6216 \u4EBA\u8138 NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_OR_CARD_OR_FACE=\u4EBA\u8BC1\u6BD4\u5BF9 \u6216 \u5237\u5361(\u4E8C\u7EF4\u7801) \u6216 \u4EBA\u8138 #ThemalCamera THERMAL_CAMERA=\u70ED\u6210\u50CF THERMAL_OPERATE=\u64CD\u4F5C POINT_QUERY=\u67E5\u8BE2\u6D4B\u6E29\u70B9 ITEM_QUERY=\u67E5\u8BE2\u6D4B\u6E29\u9879 TEMPER_QUERY=\u67E5\u8BE2\u6E29\u5EA6 HEATMAP=\u70ED\u56FE\u4FE1\u606F POINT_TEMPER=\u6D4B\u6E29\u70B9 ITEM_TEMPER=\u6D4B\u6E29\u9879 X=X Y=Y COORDINATE_ILLEGAL=\u5750\u6807\u975E\u6CD5 QUERY_RESULT=\u67E5\u8BE2\u7ED3\u679C METER_TYPE=\u6D4B\u6E29\u9879\u7C7B\u522B TEMPER_UNIT=\u6E29\u5EA6\u5355\u4F4D TEMPER=\u6E29\u5EA6 UNKNOWN=\u672A\u77E5 SPOT=\u70B9 LINE=\u7EBF AREA=\u533A\u57DF CENTIGRADE=\u6444\u6C0F\u5EA6 FAHRENHEIT=\u534E\u6C0F\u5EA6 PRESET_ID=\u9884\u7F6E\u70B9\u7F16\u53F7 RULE_ID=\u89C4\u5219\u7F16\u53F7 TEMPER_AVER=\u5E73\u5747\u6E29\u5EA6 TEMPER_MAX=\u6700\u9AD8\u6E29\u5EA6 TEMPER_MIN=\u6700\u4F4E\u6E29\u5EA6 TEMPER_MID=\u4E2D\u95F4\u6E29\u5EA6 TEMPER_STD=\u6807\u51C6\u65B9\u5DEE INPUT_ILLEGAL=\u8F93\u5165\u975E\u6CD5 TEMPER_INFO=\u6D4B\u6E29\u4FE1\u606F FIVE_MINUTES=\u4E94\u5206\u949F TEN_MINUTES=\u5341\u5206\u949F FIFTEEN_MINUTES=\u5341\u4E94\u5206\u949F THIRTY_MINUTES=\u4E09\u5341\u5206\u949F SAVE_PERIOD=\u4FDD\u5B58\u5468\u671F QUERY_LIST=\u67E5\u8BE2\u5217\u8868 RECORD_TIME=\u8BB0\u5F55\u65F6\u95F4 ITEM_NAME=\u540D\u79F0 COORDINATE=\u5750\u6807 NO_RECORD=\u65E0\u8BB0\u5F55 HEATMAP_OPERATE=\u64CD\u4F5C IDLE=\u7A7A\u95F2 ACQUIRING=\u83B7\u53D6\u4E2D RADIOMETRY_ATTACH=\u8BA2\u9605\u70ED\u56FE\u6570\u636E RADIOMETRY_DETACH=\u505C\u6B62\u8BA2\u9605 RADIOMETRY_FETCH=\u83B7\u53D6\u70ED\u56FE SAVE_HEATMAP=\u4FDD\u5B58\u70ED\u56FE HEATMAP_METADATA_INFO=\u70ED\u56FE\u5143\u6570\u636E HEIGHT=\u9AD8 WIDTH=\u5BBD LENGTH=\u6570\u636E\u5927\u5C0F SENSOR_TYPE=\u673A\u82AF\u7C7B\u578B HEATMAP_SAVE_SUCCESS=\u70ED\u56FE\u4FDD\u5B58\u6210\u529F # matrix screen MATRIX_SCREEN=\u70B9\u9635\u5C4F\u4E0B\u53D1 PASSING_STATE=\u8FC7\u8F66\u72B6\u6001 PASSING_CAR=\u8FC7\u8F66 NO_CAR=\u65E0\u8F66 IN_TIME=\u5165\u573A\u65F6\u95F4 OUT_TIME=\u51FA\u573A\u65F6\u95F4 PLATE_NUMBER=\u8F66\u724C\u53F7\u7801 CAR_OWNER=\u8F66\u4E3B PARKING_TIME=\u505C\u8F66\u65F6\u957F USER_TYPE=\u7528\u6237\u7C7B\u578B MONTHLY_CARD_USER=\u6708\u5361\u7528\u6237 ANNUAL_CARD_USER=\u5E74\u5361\u7528\u6237 LONG_TERM_USER=\u957F\u671F\u7528\u6237/VIP TEMPORARY_USER=\u4E34\u65F6\u7528\u6237/Visitor PARKING_CHARGE=\u505C\u8F66\u8D39 DAYS_DUE=\u5230\u671F\u5929\u6570 REMAINING_PARKING_SPACES=\u5269\u4F59\u8F66\u4F4D VEHICLES_NOT_ALLOWED_TO_PASS=\u4E0D\u5141\u8BB8\u8F66\u8F86\u901A\u8FC7 ALLOWED_VEHICLES_TO_PASS=\u5141\u8BB8\u8F66\u8F86\u901A\u8FC7 SET_UP=\u8BBE\u7F6E SUCCESSFULLY_ISSUED=\u4E0B\u53D1\u6210\u529F DELIVERY_FAILED=\u4E0B\u53D1\u5931\u8D25 CUSTOM_USER_CLASS=\u81EA\u5B9A\u4E49\u7528\u6237\u7C7B REMARKS_INFORMATION=\u5907\u6CE8\u4FE1\u606F CUSTOM_INFORMATION=\u81EA\u5B9A\u4E49\u4FE1\u606F # \uFFFD\uFFFD\uFFFD\uFFFD\u0373\uFFFD\uFFFD HUMAN_NUMBER_STATISTIC_TITLE=\u4EBA\u6570\u7EDF\u8BA1 HUMAN_NUMBER_STATISTIC_CONTROL=\u4EBA\u6570\u7EDF\u8BA1\u63A7\u5236 HUMAN_NUMBER_STATISTIC_EVENT_TITLE=\u4EBA\u6570\u7EDF\u8BA1\u4E8B\u4EF6\u5217\u8868 HUMAN_NUMBER_STATISTIC_EVENT_CHANNEL=\u901A\u9053 HUMAN_NUMBER_STATISTIC_EVENT_TIME=\u4E8B\u4EF6\u65F6\u523B HUMAN_NUMBER_STATISTIC_EVENT_HOUR_IN=\u672C\u5C0F\u65F6\u8FDB HUMAN_NUMBER_STATISTIC_EVENT_HOUR_OUT=\u672C\u5C0F\u65F6\u51FA HUMAN_NUMBER_STATISTIC_EVENT_TODAY_IN=\u4ECA\u65E5\u8FDB HUMAN_NUMBER_STATISTIC_EVENT_TODAY_OUT=\u4ECA\u65E5\u51FA HUMAN_NUMBER_STATISTIC_EVENT_TOTAL_IN=\u603B\u5171\u8FDB HUMAN_NUMBER_STATISTIC_EVENT_TOTAL_OUT=\u603B\u5171\u51FA HUMAN_NUMBER_STATIC_EVENT_OSD_CLEAR=OSD\u6E05\u9664 VTO_ALARM_EVENT_ROOM_NO=\u623F\u95F4\u53F7 VTO_ALARM_EVENT_CARD_NO=\u5361\u53F7 VTO_ALARM_EVENT_TIME=\u65F6\u95F4 VTO_ALARM_EVENT_OPEN_METHOD=\u5F00\u95E8\u65B9\u5F0F VTO_ALARM_EVENT_STATUS=\u72B6\u6001 VTO_REAL_LOAD_ROOM_NO=\u623F\u95F4\u53F7 VTO_REAL_LOAD_CARD_NO=\u5361\u53F7 VTO_REAL_LOAD_TIME=\u65F6\u95F4 VTO_REAL_LOAD_EVENT_INFO=\u4E8B\u4EF6\u4FE1\u606F VTO_OPERATE_MANAGER_TITLE=\u5361\u4E0E\u6307\u7EB9\u4E0E\u4EBA\u8138\u7BA1\u7406 VTO_OPERATE_MANAGER_REC_NO=\u7F16\u53F7 VTO_OPERATE_MANAGER_ROOM_NO=\u623F\u95F4\u53F7 VTO_OPERATE_MANAGER_CARD_NO=\u5361\u53F7 VTO_OPERATE_MANAGER_FINGER_PRINT_DATA=\u6307\u7EB9\u6570\u636E VTO_OPERATE_INFO_TITLE=\u589E\u52A0 VTO_OPERATE_COLLECTION_FINGER_PRINT_TITLE=\u91C7\u96C6\u6307\u7EB9 DOOR_OPEN=\u5F00\u95E8 DOOR_CLOSE=\u5173\u95E8 EVENT_OPERATE=\u4E8B\u4EF6\u64CD\u4F5C START_REAL_LOAD_PIC=\u5F00\u59CB\u667A\u80FD\u76D1\u542C STOP_REAL_LOAD_PIC=\u505C\u6B62\u667A\u80FD\u76D1\u542C ALARM_EVENT=\u62A5\u8B66\u4E8B\u4EF6 REAL_LOAD_EVENT=\u667A\u80FD\u4E8B\u4EF6 COLLECTION_RESULT=\u91C7\u96C6\u7ED3\u679C NEED_FINGER_PRINT=\u9700\u8981\u6307\u7EB9 FACE_INFO=\u4EBA\u8138\u4FE1\u606F OPEN=\u6253\u5F00 VTO=\u53EF\u89C6\u5BF9\u8BB2\u95E8\u53E3\u673A TRAFFIC_ALLOW_LIST=\u667A\u80FD\u4EA4\u901A\u5141\u8BB8\u540D\u5355 MODIFY_CARD_FACE_FAILED=\u4FEE\u6539\u4EBA\u8138\u5931\u8D25 EM_MASK_STATE_UNKNOWN=\u672A\u77E5 EM_MASK_STATE_NODISTI=\u672A\u8BC6\u522B EM_MASK_STATE_NOMASK=\u6CA1\u6234\u53E3\u7F69 EM_MASK_STATE_WEAR=\u6234\u53E3\u7F69 END_SEARCH=\u67E5\u8BE2\u7ED3\u675F DOWNLOAD_PICTURE=\u4E0B\u8F7D\u56FE\u7247 ENTER_PICTURE_PATH=\u8BF7\u8F93\u5165\u56FE\u7247\u8DEF\u5F84 LOADING=\u8BBE\u5907\u6B63\u5728\u5904\u7406\u4E2D REMOTE_OPEN_DOOR=\u8FDC\u7A0B\u5F00\u95E8 QUERY_CARD_EXIST_FAILED=\u68C0\u67E5\u5361\u53F7\u662F\u5426\u5B58\u5728\u5931\u8D25 CARD_EXIST=\u5361\u53F7\u5DF2\u5B58\u5728 INPUT_ROOM_NO=\u8BF7\u8F93\u5165\u623F\u95F4\u53F7 ROOM_NO_EXCEED_LENGTH=\u623F\u95F4\u53F7\u8D85\u8FC7\u6700\u5927\u957F\u5EA6 REMOVE_CARD_FACE_FAILED=\u5220\u9664\u4EBA\u8138\u5931\u8D25 #SCADA SCADA=\u52A8\u73AF\u4E3B\u673A SCADA_DEVICE_LIST=\u8BBE\u5907\u8868 SCADA_POINT_LIST=\u70B9\u4F4D\u8868 SCADA_ATTACH_ALARM=\u8BA2\u9605\u62A5\u8B66 SCADA_ATTACH_INFO=\u8BA2\u9605\u4FE1\u606F SCADA_ATTACH=\u8BA2\u9605 BTN_LIST = \u83B7\u53D6 BTN_ATTACH = \u8BA2\u9605 STOP_LISTEN_FAILED=\u505C\u6B62\u76D1\u542C\u5931\u8D25 SCREEN_NUMBER=\u5C4F\u5E55\u7F16\u53F7 TEXT_CONTENT=\u6587\u672C\u5185\u5BB9 TEXT_CONTENT_TYPE=\u6587\u672C\u7C7B\u578B TEXT_CONTENT_COLOR=\u6587\u672C\u989C\u8272 SCROLL_TYPE=\u6EDA\u52A8\u7C7B\u578B SCROLL_SPEED=\u6EDA\u52A8\u901F\u5EA6 ORDINARY=\u666E\u901A QR_CODE=\u4E8C\u7EF4\u7801 LOCAL_TIME=\u672C\u5730\u65F6\u95F4 RESOURCE=\u8D44\u6E90\u6587\u4EF6 NOT_ROLLING=\u4E0D\u6EDA\u52A8 SCROLL_LEFT_AND_RIGHT=\u5DE6\u53F3\u6EDA\u52A8 SCROLL_UP_AND_DOWN=\u4E0A\u4E0B\u7FFB\u9875\u6EDA\u52A8 NUMBER_STRING=\u6570\u5B57\u5B57\u7B26\u4E32 VOICE_TEXT=\u8BED\u97F3\u6587\u672C ISSUED=\u4E0B\u53D1 PROMPT=\u8BF7\u6DFB\u52A0\u5BF9\u5E94\u53C2\u6570 DEVICE_NAME=\u8BBE\u5907\u540D\u79F0 POINT_ID=\u70B9\u4F4DID IF_VALID_SIGNAL_POINT=\u662F\u5426\u6709\u6548\u4FE1\u53F7\u70B9 POINT_NAME=\u70B9\u4F4D\u540D\u79F0 ALARM_DESCRIBE=\u62A5\u8B66\u63CF\u8FF0 ALARM_LEVEL=\u62A5\u8B66\u7EA7\u522B ALARM_DELAY=\u62A5\u8B66\u65F6\u5EF6 ALARM_TYPE=\u62A5\u8B66\u7C7B\u578B ALARM_TIME=\u62A5\u8B66\u65F6\u95F4 COLLECT_TIME=\u91C7\u96C6\u65F6\u95F4 ALLOWLIST_OPERATION=\u5141\u8BB8\u540D\u5355\u64CD\u4F5C SINGLE_UPLOAD =\u5355\u4E2A\u4E0A\u4F20 LICENSE_PLATE_RUN=\u8F93\u5165\u8981\u67E5\u7684\u8F66\u724C\u53F7 FUZZY_QUERY=\u6A21\u7CCA\u67E5\u8BE2 DELETE_ALL=\u5168\u90E8\u5220\u9664 AUTHORIZATION=\u6388\u6743 UNAUTHORIZATION=\u672A\u6388\u6743 BATCH_UPLOAD=\u6279\u91CF\u4E0A\u4F20 BROWSE=\u6D4F\u89C8 UPLOAD=\u4E0A\u4F20 QUERY_INFORMATION=\u67E5\u8BE2\u4FE1\u606F DIALOG=\u5BF9\u8BDD\u6846 LICENSE_PLATE_NUMBER=\u8F66\u724C\u53F7 MODIFY_PANEL=\u4FEE\u6539\u9762\u677F SERIAL_NUMBER=\u5E8F\u53F7 OPEN_MODEL=\u5F00\u95F8\u6A21\u5F0F LICENSE_PLATE_LENGTH_TOO_LONG=\u8F66\u724C\u957F\u5EA6\u8FC7\u957F NAME_TOO_LONG=\u540D\u5B57\u957F\u5EA6\u8FC7\u957F ADD_SUCCESS=\u6DFB\u52A0\u6210\u529F ADD_FAIL=\u6DFB\u52A0\u5931\u8D25 DELETE_SUCCESS=\u5220\u9664\u6210\u529F DELETE_FAIL=\u5220\u9664\u5931\u8D25 MODIFY_SUCCESS=\u4FEE\u6539\u6210\u529F MODIFY_FAIL=\u4FEE\u6539\u5931\u8D25 UPLOAD_SUCCESS=\u4E0A\u4F20\u6210\u529F ENTER_QUERY_DATA=\u8BF7\u8F93\u5165\u8981\u67E5\u8BE2\u7684\u6570\u636E FILLING_RULES=\u586B\u5199\u5408\u6CD5\u5B57\u7B26 UPLOAD_FAIL=\u4E0A\u4F20\u5931\u8D25 UPLOADING=\u6B63\u5728\u4E0A\u4F20 SURE_UPLOAD=\u786E\u5B9A\u4E0A\u4F20? DATA_NUMBER=\u6761\u6570\u636E SELECT_DATA=\u8BF7\u9009\u62E9\u6570\u636E lib/dhDll/ImageAlg.dllBinary files differ
lib/dhDll/Infra.dllBinary files differ
lib/dhDll/IvsDrawer.dllBinary files differ
lib/dhDll/RenderEngine.dllBinary files differ
lib/dhDll/StreamConvertor.dllBinary files differ
lib/dhDll/avnetsdk.dllBinary files differ
lib/dhDll/dhconfigsdk.dllBinary files differ
lib/dhDll/dhnetsdk.dllBinary files differ
lib/dhDll/dhplay.dllBinary files differ
lib/hikDll/AudioRender.dllBinary files differ
lib/hikDll/ClientDemoDll/calib.dllBinary files differ
lib/hikDll/ClientDemoDll/iconv.dllBinary files differ
lib/hikDll/ClientDemoDll/libcrypto-1_1-x64.dllBinary files differ
lib/hikDll/ClientDemoDll/libssl-1_1-x64.dllBinary files differ
lib/hikDll/ClientDemoDll/libxml2.dllBinary files differ
lib/hikDll/ClientDemoDll/zlib1.dllBinary files differ
lib/hikDll/GdiPlus.dllBinary files differ
lib/hikDll/HCCore.dllBinary files differ
lib/hikDll/HCNetSDK.dllBinary files differ
lib/hikDll/HCNetSDKCom/AudioIntercom.dllBinary files differ
lib/hikDll/HCNetSDKCom/AudioRender.dllBinary files differ
lib/hikDll/HCNetSDKCom/HCAlarm.dllBinary files differ
lib/hikDll/HCNetSDKCom/HCAlarm.libBinary files differ
lib/hikDll/HCNetSDKCom/HCCoreDevCfg.dllBinary files differ
lib/hikDll/HCNetSDKCom/HCDisplay.dllBinary files differ
lib/hikDll/HCNetSDKCom/HCGeneralCfgMgr.dllBinary files differ
lib/hikDll/HCNetSDKCom/HCGeneralCfgMgr.libBinary files differ
lib/hikDll/HCNetSDKCom/HCIndustry.dllBinary files differ
lib/hikDll/HCNetSDKCom/HCPlayBack.dllBinary files differ
lib/hikDll/HCNetSDKCom/HCPreview.dllBinary files differ
lib/hikDll/HCNetSDKCom/HCPreview.libBinary files differ
lib/hikDll/HCNetSDKCom/HCVoiceTalk.dllBinary files differ
lib/hikDll/HCNetSDKCom/OpenAL32.dllBinary files differ
lib/hikDll/HCNetSDKCom/StreamTransClient.dllBinary files differ
lib/hikDll/HCNetSDKCom/SystemTransform.dllBinary files differ
lib/hikDll/HCNetSDKCom/libiconv2.dllBinary files differ
lib/hikDll/HXVA.dllBinary files differ
lib/hikDll/HmMerge.dllBinary files differ
lib/hikDll/MP_Render.dllBinary files differ
lib/hikDll/NPQos.dllBinary files differ
lib/hikDll/OpenAL32.dllBinary files differ
lib/hikDll/PlayCtrl.dllBinary files differ
lib/hikDll/SuperRender.dllBinary files differ
lib/hikDll/YUVProcess.dllBinary files differ
lib/hikDll/hlog.dllBinary files differ
lib/hikDll/hpr.dllBinary files differ
lib/hikDll/libcrypto-1_1-x64.dllBinary files differ
lib/hikDll/libmmd.dllBinary files differ
lib/hikDll/libssl-1_1-x64.dllBinary files differ
lib/hikDll/zlib1.dllBinary files differ
ruoyi-admin/src/main/resources/logback.xml
@@ -94,6 +94,19 @@ <pattern>${log.pattern}</pattern> </encoder> </appender> <!--dhSdk日志输出--> <appender name="dhSdk" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/dhSdk.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--按天回滚daily--> <fileNamePattern>${log.path}/dhSdk.%d{yyyy-MM-dd}.log</fileNamePattern> <!--日志最大的历史60天--> <maxHistory>60</maxHistory> </rollingPolicy> <encoder> <pattern>${log.pattern}</pattern> </encoder> </appender> <!--minio日志输出--> <appender name="minio" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/minio.log</file> @@ -245,6 +258,10 @@ <logger name="hikSdk" level="INFO"> <appender-ref ref="hikSdk"/> </logger> <!--dhSdk日志--> <logger name="dhSdk" level="INFO"> <appender-ref ref="dhSdk"/> </logger> <!--mqtt日志--> <logger name="mqtt" level="INFO"> <appender-ref ref="mqtt"/> ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/SyncTask.java
@@ -50,7 +50,9 @@ */ public void cameraState() { try { List<ArdCameras> ardCameras = iArdCamerasService.selectArdCamerasListNoDataScope(new ArdCameras()); ArdCameras ardCamera = new ArdCameras(); ardCamera.setFactory("1"); List<ArdCameras> ardCameras = iArdCamerasService.selectArdCamerasListNoDataScope(ardCamera); for (ArdCameras camera : ardCameras) { CameraCmd cmd = new CameraCmd(); cmd.setCameraId(camera.getId()); @@ -109,7 +111,7 @@ List<Vtdu> vtdus = vtduService.selectVtduList(new Vtdu()); for (Vtdu vtdu : vtdus) { if (!nameList.contains(vtdu.getName())) { mediaService.addPath(vtdu.getName(),vtdu.getRtspSource(),vtdu.getMode(),vtdu.getIsCode()); mediaService.addPath(vtdu.getName(), vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode()); } } }