From 483f72f5540bdefb3ddd4726113b3c171eb7107d Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期四, 06 七月 2023 17:20:41 +0800 Subject: [PATCH] 增加外联设备报警解析并上传mqtt --- src/main/java/com/ard/utils/tcp/ClientHandler.java | 20 -- src/main/java/com/ard/utils/hiksdk/domain/alarmEventInfo.java | 3 src/main/java/com/ard/utils/hiksdk/service/impl/LoginResultCallBack.java | 1 src/main/java/com/ard/utils/DateUtils.java | 9 src/main/java/com/ard/utils/ByteUtils.java | 21 +++ src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java | 43 +++++ src/main/java/com/ard/alarm/camera/domain/CameraCmd.java | 3 src/main/java/com/ard/utils/hiksdk/domain/ExternalAlarmEventInfo.java | 70 ++++++++++ src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java | 134 +++++++++++++++++- src/main/java/com/ard/utils/hiksdk/util/hikSdkUtil/HCNetSDK.java | 78 ++++++++++ src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java | 20 -- src/main/resources/application.yml | 7 src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java | 2 13 files changed, 347 insertions(+), 64 deletions(-) diff --git a/src/main/java/com/ard/alarm/camera/domain/CameraCmd.java b/src/main/java/com/ard/alarm/camera/domain/CameraCmd.java index 96ef4a2..3e41669 100644 --- a/src/main/java/com/ard/alarm/camera/domain/CameraCmd.java +++ b/src/main/java/com/ard/alarm/camera/domain/CameraCmd.java @@ -37,4 +37,7 @@ String objectName; /*鏄惁涓婁紶minio*/ boolean isUploadMinio; + + /*闃插尯鍙� 浠�0寮�濮�*/ + Integer wZoneIndex; } diff --git a/src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java b/src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java index 3689447..ee7702e 100644 --- a/src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java +++ b/src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java @@ -50,7 +50,7 @@ String start = messages[0]; String host = messages[1]; String tubeId = messages[2]; - String alarmTime = DateUtils.convertDate(messages[3]); + String alarmTime = DateUtils.convertDate(messages[3],"yyyy/M/d H:m:s"); String position = messages[4]; String type = messages[5]; String watcher = messages[6]; diff --git a/src/main/java/com/ard/utils/ByteUtils.java b/src/main/java/com/ard/utils/ByteUtils.java index 33c7856..c121eaf 100644 --- a/src/main/java/com/ard/utils/ByteUtils.java +++ b/src/main/java/com/ard/utils/ByteUtils.java @@ -2,6 +2,7 @@ import javax.xml.bind.DatatypeConverter; import java.io.ByteArrayOutputStream; +import java.io.UnsupportedEncodingException; import java.nio.ByteBuffer; import java.util.zip.CRC32; @@ -14,6 +15,26 @@ **/ public class ByteUtils { /** + * byte鏁扮粍杞腑鏂囧瓧绗︿覆 + */ + public static String bytesToStringZh(byte[] bytes) { + String zhStr = ""; + try { + int position = ByteUtils.findIndexOfDoubleZero(bytes); + if (position != -1) { + byte[] result = new byte[position]; + System.arraycopy(bytes, 0, result, 0, position); + zhStr = new String(result, "GBK"); + } else { + zhStr = new String(bytes, "GBK"); + } + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return zhStr; + } + + /** * Byte瀛楄妭杞琀ex * * @param b 瀛楄妭 diff --git a/src/main/java/com/ard/utils/DateUtils.java b/src/main/java/com/ard/utils/DateUtils.java index 00c25d9..c735626 100644 --- a/src/main/java/com/ard/utils/DateUtils.java +++ b/src/main/java/com/ard/utils/DateUtils.java @@ -199,10 +199,11 @@ /** * 鏃ユ湡瀛楃涓茬殑鏈堟棩鏃跺垎绉掕嚜鍔ㄨˉ闆�,骞跺皢/鏇挎崲鎴�- + * "yyyy/M/d H:m:s" to "yyyy-MM-dd HH:mm:ss" * */ - public static String convertDate(String startDate) { - DateTimeFormatter inputFormat = DateTimeFormatter.ofPattern("yyyy/M/d H:m:s"); - DateTimeFormatter outputFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - return LocalDateTime.parse(startDate, inputFormat).format(outputFormat); + public static String convertDate(String startDate,String inputFormat) { + DateTimeFormatter inputdtf = DateTimeFormatter.ofPattern(inputFormat); + DateTimeFormatter outputdtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + return LocalDateTime.parse(startDate, inputdtf).format(outputdtf); } } diff --git a/src/main/java/com/ard/utils/hiksdk/domain/ExternalAlarmEventInfo.java b/src/main/java/com/ard/utils/hiksdk/domain/ExternalAlarmEventInfo.java new file mode 100644 index 0000000..6ae023e --- /dev/null +++ b/src/main/java/com/ard/utils/hiksdk/domain/ExternalAlarmEventInfo.java @@ -0,0 +1,70 @@ +package com.ard.utils.hiksdk.domain; + +import lombok.Data; + +/** + * @Description: 澶栬仈鎶ヨ浜嬩欢淇℃伅 + * @ClassName: ExternalAlarmEventInfo + * @Author: 鍒樿嫃涔� + * @Date: 2023骞�07鏈�06鏃�16:19 + * @Version: 1.0 + **/ +@Data +public class ExternalAlarmEventInfo { + + /** + * 鎶ヨID + */ + String alarmId; + /** + * 鎶ヨ鍚嶇О + */ + String alarmName; + /** + * 闃插尯ID + */ + Integer defenseId; + /** + * 闃插尯鍚嶇О + */ + String defenseName; + + /** + * 鎶ヨ绫诲埆 + */ + String alarmType; + /** + * 鎶ヨ鏃堕棿 + */ + String alarmTime; + /** + * 瀛愮郴缁烮D + */ + Integer subSysNo; + /** + * 鍏宠仈鐩告満id + */ + String cameraId; + /** + * 鍏宠仈鐩告満鍚嶇О + */ + String cameraName; + /** + * 鍏宠仈鐩告満ip + */ + String cameraIp; + + /** + * 鍏宠仈鐩告満缁忓害 + */ + Double longitude; + /** + * 鍏宠仈鐩告満绾害 + */ + Double latitude; + /** + * 鍏宠仈鐩告満绫诲瀷 + */ + String cameraType; + +} diff --git a/src/main/java/com/ard/utils/hiksdk/domain/alarmEventInfo.java b/src/main/java/com/ard/utils/hiksdk/domain/alarmEventInfo.java index ff6a06c..0f967a1 100644 --- a/src/main/java/com/ard/utils/hiksdk/domain/alarmEventInfo.java +++ b/src/main/java/com/ard/utils/hiksdk/domain/alarmEventInfo.java @@ -11,12 +11,13 @@ */ @Data public class alarmEventInfo { + /** * 鎶ヨ鍚嶇О */ String alarmName; /** - * 鎶ヨ绫诲埆 + * 鎶ヨ绫诲埆 */ String alarmType; /** diff --git a/src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java b/src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java index b2e594c..a8a32c0 100644 --- a/src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java +++ b/src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java @@ -5,7 +5,9 @@ import com.ard.alarm.camera.domain.CameraCmd; import com.ard.alarm.camera.service.impl.ArdCamerasServiceImpl; import com.ard.config.MinioClientSingleton; +import com.ard.utils.ByteUtils; import com.ard.utils.hiksdk.common.GlobalVariable; +import com.ard.utils.hiksdk.domain.ExternalAlarmEventInfo; import com.ard.utils.hiksdk.domain.alarmEventInfo; import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK; import com.ard.utils.hiksdk.util.minio.MinioUtils; @@ -15,6 +17,7 @@ import com.sun.jna.Pointer; import lombok.extern.slf4j.Slf4j; +import javax.xml.bind.DatatypeConverter; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.nio.ByteBuffer; @@ -43,10 +46,16 @@ @Override public boolean invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) { ArdCamerasServiceImpl ardCamerasService = SpringTool.getApplicationContext().getBean(ArdCamerasServiceImpl.class); - + String sDeviceIP = ByteUtils.bytesToStringZh(pAlarmer.sDeviceIP); + Integer wLinkPort = Integer.valueOf(pAlarmer.wLinkPort); + ArdCameras ardCameras = new ArdCameras(); + ardCameras.setIp(sDeviceIP); + ardCameras.setPort(wLinkPort); + ArdCameras ardcamere = ardCamerasService.selectArdCamerasList(ardCameras).get(0); String sTime;//浜嬩欢鏃堕棿 String url;//浜嬩欢鍥剧墖 alarmEventInfo info;//浜嬩欢淇℃伅 + //lCommand鏄紶鐨勬姤璀︾被鍨� switch (lCommand) { case HCNetSDK.COMM_ALARM_RULE: @@ -57,13 +66,10 @@ Pointer pVCAInfo = strVcaAlarm.getPointer(); pVCAInfo.write(0, pAlarmInfo.getByteArray(0, strVcaAlarm.size()), 0, strVcaAlarm.size()); strVcaAlarm.read(); - Integer ruleID = Integer.valueOf(strVcaAlarm.struRuleInfo.byRuleID); + Integer ruleID = Integer.valueOf(strVcaAlarm.struRuleInfo.byRuleID); sTime = DateUtils.parseTime(strVcaAlarm.dwAbsTime);//浜嬩欢鏃堕棿 String ipaddr = new String(strVcaAlarm.struDevInfo.struDevIP.sIpV4).trim();//璁惧ip Integer channel = Integer.valueOf(strVcaAlarm.struDevInfo.byChannel);//閫氶亾 - ArdCameras ardCameras = new ArdCameras(); - ardCameras.setIp(ipaddr); - ArdCameras ardcamere = ardCamerasService.selectArdCamerasList(ardCameras).get(0); info = new alarmEventInfo(); info.setAlarmName("浜哄憳琛屼负鍒嗘瀽"); info.setAlarmTime(sTime); @@ -138,6 +144,85 @@ case HCNetSDK.COMM_GISINFO_UPLOAD: log.info("GPS鎶ヨ淇℃伅涓婃姤"); break; + case HCNetSDK.COMM_ALARMHOST_CID_ALARM: + log.info("鎶ヨ涓绘満 CID 鎶ュ憡鎶ヨ涓婁紶"); + HCNetSDK.NET_DVR_CID_ALARM netDvrCidAlarm = new HCNetSDK.NET_DVR_CID_ALARM(); + netDvrCidAlarm.write(); + Pointer pCIDInfo = netDvrCidAlarm.getPointer(); + pCIDInfo.write(0, pAlarmInfo.getByteArray(0, netDvrCidAlarm.size()), 0, netDvrCidAlarm.size()); + netDvrCidAlarm.read(); + //CID浜嬩欢鍚� + String sCIDCode = ByteUtils.bytesToStringZh(netDvrCidAlarm.sCIDCode);//CID浜嬩欢鍚� + + //CID浜嬩欢鍚� + //String sCIDDescribe = ByteUtils.bytesToStringZh(netDvrCidAlarm.sCIDDescribe);//CID浜嬩欢鍚� + int position = ByteUtils.findIndexOfDoubleZero(netDvrCidAlarm.sCIDDescribe); + String sCIDDescribe; + if (position != -1) { + byte[] result = new byte[position]; + System.arraycopy(netDvrCidAlarm.sCIDDescribe, 0, result, 0, position); + sCIDDescribe = ByteUtils.bytesToStringZh(result); + } else { + sCIDDescribe = ByteUtils.bytesToStringZh(netDvrCidAlarm.sCIDDescribe); + } + //瑙﹀彂鎶ヨ鐨勬椂闂寸偣 + String struTriggerTime = DateUtils.convertDate(parseAlarmTime(netDvrCidAlarm.struTriggerTime), "yyyy-M-d H:m:s"); + //涓婁紶鎶ヨ鐨勬椂闂寸偣 + String struUploadTime = DateUtils.convertDate(parseAlarmTime(netDvrCidAlarm.struUploadTime), "yyyy-M-d H:m:s"); + //鎶ュ憡绫诲瀷 + String byReportType = ""; + switch (netDvrCidAlarm.byReportType) { + case 1: + byReportType = "闃插尯鎶ヨ"; + break; + case 2: + byReportType = "瑙嗛鎶ヨ"; + break; + case 3: + byReportType = "杞槻鍖烘姤璀�"; + break; + case 4: + byReportType = "鎸熸寔鎶ヨ"; + break; + case 5: + byReportType = "闃叉媶鎶ヨ "; + break; + case 6: + byReportType = "鎿嶄綔鎶ュ憡 "; + break; + case 7: + byReportType = "寮傚父鎶ュ憡 "; + break; + } + //瀛愮郴缁熷彿 + Integer bySubSysNo = Integer.valueOf(netDvrCidAlarm.bySubSysNo); + //闃插尯鍙� 璧峰0 + Integer wDefenceNo = Integer.valueOf(netDvrCidAlarm.wDefenceNo); + //闃插尯鍚嶇О + String wDefenceName = ""; + if (!bySubSysNo.equals(-1)) { + CameraCmd cmd = new CameraCmd(); + cmd.setCameraId(ardcamere.getId()); + cmd.setWZoneIndex(wDefenceNo); + wDefenceName = HikClientUtil.getDefenseZoneName(cmd); + } + if (sCIDDescribe.contains("鎭㈠")) { + return true; + } + ExternalAlarmEventInfo externalAlarmEventInfo = new ExternalAlarmEventInfo(); + externalAlarmEventInfo.setAlarmId(sCIDCode); + externalAlarmEventInfo.setAlarmName(sCIDDescribe); + externalAlarmEventInfo.setDefenseId((wDefenceNo + 1) ); + externalAlarmEventInfo.setDefenseName(wDefenceName); + externalAlarmEventInfo.setSubSysNo(bySubSysNo); + externalAlarmEventInfo.setAlarmType(byReportType); + externalAlarmEventInfo.setAlarmTime(struTriggerTime); + externalAlarmEventInfo.setCameraId(ardcamere.getId()); + externalAlarmEventInfo.setCameraName(ardcamere.getName()); + externalAlarmEventInfo.setCameraIp(ardcamere.getIp()); + externalAlarmEventInfo.setCameraType(ardcamere.getGdtype()); + publishMqtt(externalAlarmEventInfo); + break; default: log.info("鏈煡鎶ヨ浜嬩欢绫诲瀷:lCommand:" + Integer.toHexString(lCommand)); break; @@ -198,19 +283,48 @@ } /** - * 鎵撳嵃鏃ュ織 + * 鎵撳嵃閫氱敤鍏夌數鏃ュ織 */ private void printLog(alarmEventInfo info) { - log.info("銆愯鍒欍��" + info.getAlarmName() +"銆愯鍒檌d銆�" + info.getRuleId() + "銆愮被鍨嬨��" + info.getAlarmType() + + log.info("銆愯鍒欍��" + info.getAlarmName() + "銆愯鍒檌d銆�" + info.getRuleId() + "銆愮被鍨嬨��" + info.getAlarmType() + "銆愭椂闂淬��" + info.getAlarmTime() + "銆愮浉鏈篿d銆�" + info.getCameraId() + "銆愮浉鏈恒��" + info.getCameraName() + - "銆怚P銆�" + info.getCameraIp() + "銆愰�氶亾銆�" + info.getCameraChannel() +"銆愬瀷鍙枫��" + info.getCameraType() + + "銆怚P銆�" + info.getCameraIp() + "銆愰�氶亾銆�" + info.getCameraChannel() + "銆愬瀷鍙枫��" + info.getCameraType() + "銆愬浘鐗囥��" + info.getPicUrl() + "銆愬潗鏍囥��" + info.getLongitude() + "," + info.getLatitude()); } /** - * 鎺ㄩ�乵qtt + * 鎵撳嵃澶栬仈鎶ヨ鏃ュ織 + */ + private void printLog(ExternalAlarmEventInfo info) { + log.info("銆愭姤璀D銆�" + info.getAlarmId() + "銆愭姤璀﹀悕绉般��" + info.getAlarmName() + + "銆愰槻鍖篒D銆�" + info.getDefenseId() + "銆愰槻鍖哄悕绉般��" + info.getDefenseName() + "銆愮被鍨嬨��" + info.getAlarmType() + + "銆愭椂闂淬��" + info.getAlarmTime() + "銆愮浉鏈篒D銆�" + info.getCameraId() + "銆愮浉鏈恒��" + info.getCameraName() + + "銆怚P銆�" + info.getCameraIp() + "銆愬瀷鍙枫��" + info.getCameraType()); + } + + /** + * 閫氱敤鍏夌數鎶ヨ鎺ㄩ�乵qtt */ private void publishMqtt(alarmEventInfo info) { - // printLog(info); + // printLog(info); MqttConsumer.publish(2, false, "camera", JSON.toJSONString(info)); } + /** + * 澶栬仈鎶ヨ鎺ㄩ�乵qtt + */ + private void publishMqtt(ExternalAlarmEventInfo info) { + printLog(info); + MqttConsumer.publish(2, false, "camera", JSON.toJSONString(info)); + } + /** + * 鏃堕棿鏍煎紡鍖� + */ + private String parseAlarmTime(HCNetSDK.NET_DVR_TIME_EX netDvrTimeEx) { + short wYear = netDvrTimeEx.wYear; + byte byMonth = netDvrTimeEx.byMonth; + byte byDay = netDvrTimeEx.byDay; + byte byHour = netDvrTimeEx.byHour; + byte byMinute = netDvrTimeEx.byMinute; + byte bySecond = netDvrTimeEx.bySecond; + return wYear + "-" + byMonth + "-" + byDay + " " + byHour + ":" + byMinute + ":" + bySecond; + } } diff --git a/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java b/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java index 7ace4c1..62455b1 100644 --- a/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java +++ b/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java @@ -2,11 +2,13 @@ import com.ard.alarm.camera.domain.ArdCameras; import com.ard.alarm.camera.domain.CameraCmd; +import com.ard.utils.ByteUtils; import com.ard.utils.hiksdk.common.GlobalVariable; import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK; import com.ard.utils.hiksdk.util.minio.MinioUtils; import com.sun.jna.Native; import com.sun.jna.Platform; +import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import lombok.extern.slf4j.Slf4j; @@ -124,7 +126,6 @@ * @鍒涘缓鏃堕棿 2023/1/17 16:12 * @淇敼浜哄拰鍏跺畠淇℃伅 */ - public static void login(ArdCameras camera) { // 鍒濆鍖� if (!hCNetSDK.NET_DVR_Init()) { @@ -186,7 +187,7 @@ Thread.sleep(100); login(camera); String ip = camera.getIp(); - cameraMap.put(ip,camera); + cameraMap.put(ip, camera); } } catch (Exception ex) { log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage()); @@ -254,7 +255,7 @@ HCNetSDK.NET_DVR_SETUPALARM_PARAM m_strAlarmInfo = new HCNetSDK.NET_DVR_SETUPALARM_PARAM(); m_strAlarmInfo.dwSize = m_strAlarmInfo.size(); // 鏅鸿兘浜ら�氬竷闃蹭紭鍏堢骇锛�0 - 涓�绛夌骇锛堥珮锛夛紝1 - 浜岀瓑绾э紙涓級锛�2 - 涓夌瓑绾э紙浣庯級 - m_strAlarmInfo.byLevel = 1; + m_strAlarmInfo.byLevel = 2; // 鏅鸿兘浜ら�氭姤璀︿俊鎭笂浼犵被鍨嬶細0 - 鑰佹姤璀︿俊鎭紙NET_DVR_PLATE_RESULT锛�, 1 - 鏂版姤璀︿俊鎭�(NET_ITS_PLATE_RESULT) m_strAlarmInfo.byAlarmInfoType = 1; // 甯冮槻绫诲瀷(浠呴拡瀵归棬绂佷富鏈恒�佷汉璇佽澶�)锛�0 - 瀹㈡埛绔竷闃�(浼氭柇缃戠画浼�)锛�1 - 瀹炴椂甯冮槻(鍙笂浼犲疄鏃舵暟鎹�) @@ -263,7 +264,6 @@ // 甯冮槻鎴愬姛锛岃繑鍥炲竷闃叉垚鍔熺殑鏁版嵁浼犺緭閫氶亾鍙� lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo); if (lAlarmHandle == -1) { - log.error("璁惧甯冮槻澶辫触锛岄敊璇爜==========銆�" + hCNetSDK.NET_DVR_GetLastError()); log.error("璁惧甯冮槻澶辫触锛岄敊璇爜==========銆�" + hCNetSDK.NET_DVR_GetLastError()); // 娉ㄩ攢 閲婃斁sdk璧勬簮 logout(lUserID); @@ -287,6 +287,7 @@ // 閲婃斁sdk璧勬簮 hCNetSDK.NET_DVR_Cleanup(); } + /** * 鎶撳浘 * @@ -344,4 +345,38 @@ return ""; } } + + /** + * 鑾峰彇闃插尯鍚嶇О + * 閫氶亾鍙�==闃插尯鍙� 浠�0寮�濮� + * 鍒樿嫃涔� + * 2023/7/6 10:48 + */ + public static String getDefenseZoneName(CameraCmd cmd) { + String name=""; + try { + String cameraId = cmd.getCameraId(); + Integer channelNum = cmd.getWZoneIndex();//閫氶亾鍙�==闃插尯鍙� + if (!GlobalVariable.loginMap.containsKey(cameraId)) { + return name; + } + Integer userId = GlobalVariable.loginMap.get(cameraId); + + HCNetSDK.NET_DVR_ALARMIN_PARAM netDvrAlarminParam = new HCNetSDK.NET_DVR_ALARMIN_PARAM(); + Pointer point = netDvrAlarminParam.getPointer(); + IntByReference ibrBytesReturned = new IntByReference(); + netDvrAlarminParam.write(); + boolean b = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_ALARMIN_PARAM, channelNum, point, netDvrAlarminParam.size(), ibrBytesReturned); + if (b) { + netDvrAlarminParam.read(); + name = ByteUtils.bytesToStringZh(netDvrAlarminParam.byName); + } else { + int error = hCNetSDK.NET_DVR_GetLastError(); + log.info("鑾峰彇闃插尯鍚嶇О澶辫触:" + error); + } + } catch (Exception ex) { + log.error("鑾峰彇闃插尯鍚嶇О寮傚父:" + ex.getMessage()); + } + return name; + } } \ No newline at end of file diff --git a/src/main/java/com/ard/utils/hiksdk/service/impl/LoginResultCallBack.java b/src/main/java/com/ard/utils/hiksdk/service/impl/LoginResultCallBack.java index 6f52be7..c5ec4a2 100644 --- a/src/main/java/com/ard/utils/hiksdk/service/impl/LoginResultCallBack.java +++ b/src/main/java/com/ard/utils/hiksdk/service/impl/LoginResultCallBack.java @@ -1,6 +1,7 @@ package com.ard.utils.hiksdk.service.impl; import com.ard.alarm.camera.domain.ArdCameras; +import com.ard.alarm.camera.domain.CameraCmd; import com.ard.utils.hiksdk.common.GlobalVariable; import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK; import com.sun.jna.Pointer; diff --git a/src/main/java/com/ard/utils/hiksdk/util/hikSdkUtil/HCNetSDK.java b/src/main/java/com/ard/utils/hiksdk/util/hikSdkUtil/HCNetSDK.java index 23a6961..27c1363 100644 --- a/src/main/java/com/ard/utils/hiksdk/util/hikSdkUtil/HCNetSDK.java +++ b/src/main/java/com/ard/utils/hiksdk/util/hikSdkUtil/HCNetSDK.java @@ -530,9 +530,9 @@ public static final int NET_DVR_SET_DDNSCFG_EX = 275;//璁剧疆鎵╁睍DDNS鍙傛暟 public static final int NET_DVR_SET_PTZPOS = 292; //浜戝彴璁剧疆PTZ浣嶇疆 public static final int NET_DVR_GET_PTZPOS = 293; //浜戝彴鑾峰彇PTZ浣嶇疆 - public static final int NET_DVR_SET_PTZLOCKCFG=3288;//璁剧疆浜戝彴閿佸畾淇℃伅 - public static final int NET_DVR_GET_PTZLOCKCFG=3287;//鑾峰彇浜戝彴閿佸畾淇℃伅 - public static final int NET_DVR_PTZ_INITIALPOSITIONCTRL=3283;//闆舵柟浣嶈鎺у埗 + public static final int NET_DVR_SET_PTZLOCKCFG = 3288;//璁剧疆浜戝彴閿佸畾淇℃伅 + public static final int NET_DVR_GET_PTZLOCKCFG = 3287;//鑾峰彇浜戝彴閿佸畾淇℃伅 + public static final int NET_DVR_PTZ_INITIALPOSITIONCTRL = 3283;//闆舵柟浣嶈鎺у埗 public static final int NET_DVR_GET_PTZSCOPE = 294;//浜戝彴鑾峰彇PTZ鑼冨洿 public static final int NET_DVR_SET_BASICPARAMCFG = 3271;//璁剧疆PTZ鍩烘湰鍙傛暟淇℃伅 public static final int NET_DVR_COMPLETE_RESTORE_CTRL = 3420; //璁剧疆瀹屽叏鎭㈠鍑哄巶鍊� @@ -1162,7 +1162,7 @@ public static class NET_DVR_SCHEDTIME extends HIKSDKStructure { public byte byStartHour; //寮�濮嬫椂闂� public byte byStartMin; - public byte byStopHour; //缁撴潫鏃堕棿 + public byte byStopHour; //缁撴潫鏃堕棿 public byte byStopMin; @@ -3150,6 +3150,66 @@ public NET_DVR_TIMEPOINT struEndPoint; //澶忔椂鍒跺仠姝㈡椂闂� } + //闃插尯鍙傛暟 + public static class NET_DVR_ALARMIN_PARAM extends HIKSDKStructure { + public int dwSize; + public byte[] byName = new byte[NAME_LEN]; + // public DETECTOR_TYPE wDetectorType; + public byte byType; + public byte byUploadAlarmRecoveryReport; + public int dwParam; + //public byte[][] struAlarmTime = new byte[MAX_DAYS][MAX_TIMESEGMENT]; + public byte[] byAssociateAlarmOut = new byte[MAX_ALARMHOST_ALARMOUT_NUM]; + public byte[] byAssociateSirenOut = new byte[8]; + public byte bySensitivityParam; + public byte byArrayBypass; + public byte byJointSubSystem; + public byte byModuleStatus; + public short wModuleAddress; + public byte byModuleChan; + public byte byModuleType; + public short wZoneIndex; + public short wInDelay; + public short wOutDelay; + public byte byAlarmType; + public byte byZoneResistor; + public float fZoneResistorManual; + public byte[] byDetectorSerialNo = new byte[128]; + public byte byZoneSignalType; + public byte byDisableDetectorTypeCfg; + public byte byTimeOutRange; + public byte[] byAssociateLampOut = new byte[8]; + public short wTimeOut; + public byte byDetectorSignalIntensity; + public byte byTimeOutMethod; + public byte[] byRes3 = new byte[8]; + } + + enum DETECTOR_TYPE { + PANIC_BUTTON, + MAGNETIC_CONTACT, + SMOKE_DETECTOR, + ACTIVE_INFRARED_DETECTOR, + PASSIVE_INFRARED_DETECTOR, + GLASS_BREAK_DETECTOR, + VIBRATION_DETECTOR, + DUAL_TECHNOLOGY_PIR_DETECTOR, + TRIPLE_TECHNOLOGY_PIR_DETECTOR, + HUMIDITY_DETECTOR, + TEMPERATURE_DETECTOR, + COMBUSTIBLE_GAS_DETECTOR, + DYNAMIC_SWITCH, + CONTROL_SWITCH, + SMART_LOCK, + WATER_DETECTOR, + DISPLACEMENT_DETECTOR, + SINGLE_INFRARED_DETECTOR, + SINGLE_ZONE_MODULE, + CURTAIN_INFRARED_DETECTOR, + DOORBELL_SWITCH, + OTHER_DETECTOR + } + //鍥剧墖璐ㄩ噺 public static class NET_DVR_JPEGPARA extends HIKSDKStructure { /*娉ㄦ剰锛氬綋鍥惧儚鍘嬬缉鍒嗚鲸鐜囦负VGA鏃讹紝鏀寔0=CIF, 1=QCIF, 2=D1鎶撳浘锛� @@ -3781,19 +3841,22 @@ public short wTiltPos;//鍨傜洿鍙傛暟 public short wZoomPos;//鍙樺�嶅弬鏁� } + //PTZ閿佸畾淇℃伅 public static class NET_DVR_PTZ_LOCKCFG extends HIKSDKStructure { public int dwSize;//缁撴瀯浣撳ぇ灏� public byte byWorkMode;//浜戝彴閿佸畾鎺у埗锛�0- 瑙i攣锛�1- 閿佸畾 public byte[] byRes = new byte[127]; } + //闆舵柟浣嶈鎺у埗淇℃伅 public static class NET_DVR_INITIALPOSITIONCTRL extends HIKSDKStructure { - public int dwSize ;//缁撴瀯浣撳ぇ灏� + public int dwSize;//缁撴瀯浣撳ぇ灏� public short dwChan;//璁惧閫氶亾鍙� public byte byWorkMode;//宸ヤ綔妯″紡锛�0- 璁剧疆锛�1- 璋冪敤锛�2- 娓呴櫎 public byte[] byRes = new byte[127]; } + //鐞冩満浣嶇疆淇℃伅 public static class NET_DVR_PTZ_BASICPARAMCFG extends HIKSDKStructure { public short dwSize;//缁撴瀯浣撳ぇ灏� @@ -10244,14 +10307,16 @@ boolean NET_DVR_InquiryRecordTimeSpan(int lUserID, int dwChannel, NET_DVR_RECORD_TIME_SPAN_INQUIRY lpInquiry, NET_DVR_RECORD_TIME_SPAN lpResult); boolean NET_DVR_StartGetDevState(NET_DVR_CHECK_DEV_STATE pParams); + //寮哄埗I甯у弬鏁扮粨鏋勪綋銆� - public static class NET_DVR_I_FRAME extends HIKSDKStructure{ + public static class NET_DVR_I_FRAME extends HIKSDKStructure { public int dwSize; public byte[] sStreamID = new byte[32]; //娴両Ds SDK 涓 STREAM_ID_LEN杩涜浜嗗畾涔夛紝璧嬪��32 public int dwChannel;//閫氶亾鍙� public byte byStreamType; //鐮佹祦绫诲瀷锛�0-涓荤爜娴侊紝1-瀛愮爜娴侊紝2-鐮佹祦3锛�3-铏氭嫙鐮佹祦锛屼互姝ょ被鎺� public byte[] byRes = new byte[63]; //淇濈暀锛岀疆涓�0 鎸夌収SDK瑕佹眰杩涜瀵瑰簲璧嬪�� } + //gps鐩稿叧缁撴瀯瀹氫箟 public static class TimeSegParam extends HIKSDKStructure { //GPS鏁版嵁鏌ユ壘璧峰鏃堕棿 @@ -10585,6 +10650,7 @@ public byte[] byRes = new byte[6]; } } + //鎾斁搴撳嚱鏁板0鏄�,PlayCtrl.dll interface PlayCtrl extends Library { public static final int STREAME_REALTIME = 0; diff --git a/src/main/java/com/ard/utils/tcp/ClientHandler.java b/src/main/java/com/ard/utils/tcp/ClientHandler.java index c79496d..5a7e3ac 100644 --- a/src/main/java/com/ard/utils/tcp/ClientHandler.java +++ b/src/main/java/com/ard/utils/tcp/ClientHandler.java @@ -297,15 +297,7 @@ // log.info("鎶ヨ绫诲瀷:" + alarmType); byte[] szName = Arrays.copyOfRange(data, index + 64, index + 96); - int position = ByteUtils.findIndexOfDoubleZero(szName); - String alarmPointName; - if (position != -1) { - byte[] result = new byte[position]; - System.arraycopy(szName, 0, result, 0, position); - alarmPointName = new String(result, "GBK"); - } else { - alarmPointName = new String(szName, "GBK"); - } + String alarmPointName = ByteUtils.bytesToStringZh(szName); // log.info("鎵�灞炲憡璀﹀尯鍩熷悕绉�:" + alarmPointName); byte[] afTx = Arrays.copyOfRange(data, index + 96, index + 100); afTx = ByteUtils.toLittleEndian(afTx); @@ -405,15 +397,7 @@ byte[] szName = Arrays.copyOfRange(data, index + 32, index + 64); //log.info("鎵�灞炲憡璀﹀尯鍩熷悕绉�:" + DatatypeConverter.printHexBinary(szName)); - int position = ByteUtils.findIndexOfDoubleZero(szName); - String alarmPointName; - if (position != -1) { - byte[] result = new byte[position]; - System.arraycopy(szName, 0, result, 0, position); - alarmPointName = new String(result, "GBK"); - } else { - alarmPointName = new String(szName, "GBK"); - } + String alarmPointName = ByteUtils.bytesToStringZh(szName); // log.info("鎵�灞炲憡璀﹀尯鍩熷悕绉�:" + alarmPointName); //log.info("鎶ヨ淇℃伅锛�" + "銆恑d銆�" + id + "銆恘ame銆�" + alarmPointName + "銆恆larmType銆�" + alarmType + "銆恆larmTime銆�" + alarmTime); ArdAlarmRadar ardAlarmRadar = new ArdAlarmRadar(); diff --git a/src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java b/src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java index 37d339e..82d9685 100644 --- a/src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java +++ b/src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java @@ -232,15 +232,7 @@ // log.info("鎶ヨ绫诲瀷:" + alarmType); byte[] szName = Arrays.copyOfRange(data, index + 64, index + 96); - int position = ByteUtils.findIndexOfDoubleZero(szName); - String alarmPointName; - if (position != -1) { - byte[] result = new byte[position]; - System.arraycopy(szName, 0, result, 0, position); - alarmPointName = new String(result, "GBK"); - } else { - alarmPointName = new String(szName, "GBK"); - } + String alarmPointName = ByteUtils.bytesToStringZh(szName); // log.info("鎵�灞炲憡璀﹀尯鍩熷悕绉�:" + alarmPointName); byte[] afTx = Arrays.copyOfRange(data, index + 96, index + 100); afTx = ByteUtils.toLittleEndian(afTx); @@ -340,15 +332,7 @@ byte[] szName = Arrays.copyOfRange(data, index + 32, index + 64); //log.info("鎵�灞炲憡璀﹀尯鍩熷悕绉�:" + DatatypeConverter.printHexBinary(szName)); - int position = ByteUtils.findIndexOfDoubleZero(szName); - String alarmPointName; - if (position != -1) { - byte[] result = new byte[position]; - System.arraycopy(szName, 0, result, 0, position); - alarmPointName = new String(result, "GBK"); - } else { - alarmPointName = new String(szName, "GBK"); - } + String alarmPointName = ByteUtils.bytesToStringZh(szName); // log.info("鎵�灞炲憡璀﹀尯鍩熷悕绉�:" + alarmPointName); //log.info("鎶ヨ淇℃伅锛�" + "銆恑d銆�" + id + "銆恘ame銆�" + alarmPointName + "銆恆larmType銆�" + alarmType + "銆恆larmTime銆�" + alarmTime); ArdAlarmRadar ardAlarmRadar = new ArdAlarmRadar(); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 2f6c991..4f0add0 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,3 +1,4 @@ + spring: datasource: # 浣跨敤druid鏁版嵁搴撹繛鎺ユ睜 @@ -29,7 +30,7 @@ port: 40000 enabled: true tcp: - enabled: true + enabled: false mqtt: host: tcp://192.168.1.15:1883 clientId: cc3 @@ -51,4 +52,6 @@ secretKey: xzx12345 logging: level: - com.ard: info \ No newline at end of file + com.ard: info +server: + port: 8088 \ No newline at end of file -- Gitblit v1.9.3