From 192dbdd92c69895a05dee3b59635d5a5204affe6 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期四, 29 六月 2023 11:51:16 +0800
Subject: [PATCH] 增加雷达ID推送mqtt
---
src/main/java/com/ard/alarm/radar/domain/RadarAlarmData.java | 19 +++++++++
src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java | 78 +++++++++++++++++++++++---------------
src/main/java/com/ard/alarm/radar/domain/ArdAlarmRadar.java | 11 ++---
3 files changed, 70 insertions(+), 38 deletions(-)
diff --git a/src/main/java/com/ard/alarm/radar/domain/RadarAlarmInfo.java b/src/main/java/com/ard/alarm/radar/domain/ArdAlarmRadar.java
similarity index 67%
rename from src/main/java/com/ard/alarm/radar/domain/RadarAlarmInfo.java
rename to src/main/java/com/ard/alarm/radar/domain/ArdAlarmRadar.java
index 4fcd6e6..f1d9fac 100644
--- a/src/main/java/com/ard/alarm/radar/domain/RadarAlarmInfo.java
+++ b/src/main/java/com/ard/alarm/radar/domain/ArdAlarmRadar.java
@@ -2,8 +2,6 @@
import lombok.Data;
-import java.util.Date;
-
/**
* @Description:
* @ClassName: RadarAlarmInfo
@@ -12,12 +10,11 @@
* @Version: 1.0
**/
@Data
-public class RadarAlarmInfo {
+public class ArdAlarmRadar {
- Integer id;
+ Integer targetId;
String name;
- String alarmTime;
Double longitude;
- Double lagitude;
-
+ Double latitude;
+ String alarmType;
}
diff --git a/src/main/java/com/ard/alarm/radar/domain/RadarAlarmData.java b/src/main/java/com/ard/alarm/radar/domain/RadarAlarmData.java
new file mode 100644
index 0000000..ce011af
--- /dev/null
+++ b/src/main/java/com/ard/alarm/radar/domain/RadarAlarmData.java
@@ -0,0 +1,19 @@
+package com.ard.alarm.radar.domain;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @ClassName: RadarAlarmData
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�06鏈�28鏃�13:42
+ * @Version: 1.0
+ **/
+@Data
+public class RadarAlarmData {
+ String radarId;
+ String alarmTime;
+ List<ArdAlarmRadar> ardAlarmRadars;
+}
diff --git a/src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java b/src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java
index 5a0c7fa..b1f74a4 100644
--- a/src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java
+++ b/src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java
@@ -2,10 +2,9 @@
import com.alibaba.fastjson2.JSON;
import com.ard.alarm.radar.domain.ArdEquipRadar;
-import com.ard.alarm.radar.domain.RadarAlarmInfo;
-import com.ard.hiksdk.domain.alarmEventInfo;
+import com.ard.alarm.radar.domain.RadarAlarmData;
+import com.ard.alarm.radar.domain.ArdAlarmRadar;
import com.ard.utils.LonlatConver;
-import com.ard.utils.SpringTool;
import com.ard.utils.mqtt.MqttConsumer;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
@@ -14,13 +13,9 @@
import org.gavaghan.geodesy.Ellipsoid;
import org.gavaghan.geodesy.GeodeticCalculator;
import org.gavaghan.geodesy.GlobalCoordinates;
-import sun.nio.cs.ext.GBK;
import javax.xml.bind.DatatypeConverter;
-import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
-import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.ScheduledFuture;
@@ -41,13 +36,15 @@
private Double longitude;
private Double lagitude;
private String name;
+ private String id;
public NettyTcpClientHandler(ArdEquipRadar ardEquipRadar) {
this.host = ardEquipRadar.getIp();
this.port = ardEquipRadar.getPort();
this.longitude = ardEquipRadar.getLongitude();
this.lagitude = ardEquipRadar.getLatitude();
- this.name=ardEquipRadar.getName();
+ this.name = ardEquipRadar.getName();
+ this.id = ardEquipRadar.getId();
}
private ChannelHandlerContext context;
@@ -60,8 +57,8 @@
msg.getBytes(msg.readerIndex(), byteArray);
byte[] bytes = receiveCompletePacket(byteArray);
if (bytes != null) {
- // String hexString = DatatypeConverter.printHexBinary(bytes);
- // log.info(hexString);
+ // String hexString = DatatypeConverter.printHexBinary(bytes);
+ // log.info(hexString);
processData(bytes);
}
}
@@ -115,15 +112,15 @@
data = transferData(data);//鍘绘帀鍖呭ご鍜屽寘灏俱�佹牎楠屽強杞箟
byte[] type = Arrays.copyOfRange(data, 0, 1);//鍛戒护绫诲瀷
- log.info("鍛戒护绫诲瀷:" + DatatypeConverter.printHexBinary(type));
+ // log.info("鍛戒护绫诲瀷:" + DatatypeConverter.printHexBinary(type));
byte[] cmdId = Arrays.copyOfRange(data, 1, 2);//鍛戒护ID
- log.info("鍛戒护ID:" + DatatypeConverter.printHexBinary(cmdId));
+ // log.info("鍛戒护ID:" + DatatypeConverter.printHexBinary(cmdId));
byte[] payloadSize = Arrays.copyOfRange(data, 2, 4);//鏈夋晥璐熻浇澶у皬
payloadSize = toLittleEndian(payloadSize);
int payloadSizeToDecimal = byteArrayToDecimal(payloadSize);
- log.info("鏈夋晥璐熻浇澶у皬(杞暣鍨�):" + payloadSizeToDecimal);
+ // log.info("鏈夋晥璐熻浇澶у皬(杞暣鍨�):" + payloadSizeToDecimal);
if (Arrays.equals(cmdId, new byte[]{0x01})) {
byte[] dwTim = Arrays.copyOfRange(data, 4, 8);
@@ -131,22 +128,25 @@
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long l = byteArrayToDecimal(dwTim);
String alarmTime = sdf.format(l * 1000);
- log.info("鍛ㄨ鍥惧儚鐨勫嚭鐜版椂闂�(杞琩ate):" + alarmTime);
+ // log.info("鍛ㄨ鍥惧儚鐨勫嚭鐜版椂闂�(杞琩ate):" + alarmTime);
byte[] wTargetNum = Arrays.copyOfRange(data, 8, 10);
wTargetNum = toLittleEndian(wTargetNum);
int targetNum = byteArrayToDecimal(wTargetNum);
- log.info("鐩爣鎬荤偣鏁�(杞暣鍨�):" + targetNum);
+ //log.info("鐩爣鎬荤偣鏁�(杞暣鍨�):" + targetNum);
//瑙f瀽NET_TARGET_UNIT(64鏄疦ET_TARGET_HEAD鐨勫瓧鑺傛暟)
int uintSize = (payloadSizeToDecimal - 64) / targetNum;
- log.info("鍗曟潯鎶ヨ澶у皬:" + uintSize);
+ // log.info("鍗曟潯鎶ヨ澶у皬:" + uintSize);
+ List<ArdAlarmRadar> radarAlarmInfos = new ArrayList<>();
for (int i = 0; i < targetNum; i++) {
Integer index = 68 + uintSize * i;
byte[] dwID = Arrays.copyOfRange(data, index, index + 4);
+ // log.info("鐩爣ID:" + DatatypeConverter.printHexBinary(cmdId));
dwID = toLittleEndian(dwID);
int id = byteArrayToDecimal(dwID);
+
// log.info("鐩爣ID鍙凤細" + id);
byte[] iDistance = Arrays.copyOfRange(data, index + 8, index + 12);
@@ -177,12 +177,7 @@
// cTrkNum = toLittleEndian(cTrkNum);
// int TrkNum = byteArrayToDecimal(cTrkNum);
// log.info("杞ㄨ抗鐐规暟:" + TrkNum);
-//
-// byte[] cStat = Arrays.copyOfRange(data, index + 23, index + 24);
-// cStat = toLittleEndian(cStat);
-// int Stat = byteArrayToDecimal(cStat);
-// log.info("鐩爣褰撳墠鐘舵��:" + Stat);
-//
+
// byte[] sVx = Arrays.copyOfRange(data, index + 24, index + 26);
// sVx = toLittleEndian(sVx);
// int Vx = byteArrayToDecimal(sVx);
@@ -203,6 +198,21 @@
// int Grp = byteArrayToDecimal(cGrp);
// log.info("鎵�灞炵粍:" + Grp);
//endregion
+ String alarmType = "";
+ byte[] cStat = Arrays.copyOfRange(data, index + 23, index + 24);
+ cStat = toLittleEndian(cStat);
+ String binaryString = String.format("%8s", Integer.toBinaryString(cStat[0] & 0xFF)).replace(' ', '0');
+ // log.info("鐩爣褰撳墠鐘舵��:" + binaryString);
+ // 鎻愬彇绗�4浣嶈嚦绗�6浣嶇殑鍊�
+ int extractedValue = (cStat[0] >> 4) & 0b00001111;
+ // 鍒ゆ柇鎻愬彇鐨勫��
+ if (extractedValue == 0b0000) {
+ alarmType = "杩愬姩鐩爣妫�娴�";
+ } else if (extractedValue == 0b0001) {
+ alarmType = "鐑簮妫�娴�";
+ }
+ // log.info("鎶ヨ绫诲瀷:" + alarmType);
+
byte[] szName = Arrays.copyOfRange(data, index + 64, index + 96);
int position = findIndexOfDoubleZero(szName);
String alarmPointName = "";
@@ -222,23 +232,29 @@
afTy = toLittleEndian(afTy);
float fTy = bytesToFloat(afTy);
// log.info("鍨傜洿瑙掑害:" + fTy);
- log.info("闆疯揪淇℃伅锛�" + host + "銆恜ort銆�" + port + "銆怷銆�" + longitude + "銆怸銆�" + lagitude);
+ // log.info("闆疯揪淇℃伅锛�" + host + "銆恜ort銆�" + port + "銆怷銆�" + longitude + "銆怸銆�" + lagitude);
Double[] radarXY = {longitude, lagitude};
Double[] alarmXY = CalculateCoordinates(radarXY, Distance, (double) fTx);
- log.info("鎶ヨ淇℃伅锛�" + "銆恑d銆�" + id + "銆恘ame銆�" + alarmPointName + "銆恆larmTime銆�" + alarmTime + "銆恉istance銆�" + Distance + "銆怭銆�" + fTx + "銆怲銆�" + fTy + "銆怷銆�" + alarmXY[0] + "銆怸銆�" + alarmXY[1]);
- RadarAlarmInfo alarmInfo=new RadarAlarmInfo();
- alarmInfo.setId(id);
- alarmInfo.setAlarmTime(alarmTime);
- alarmInfo.setName(alarmPointName+"("+name+")");
- alarmInfo.setLongitude(alarmXY[0]);
- alarmInfo.setLagitude(alarmXY[1]);
- MqttConsumer.publish(2, false, "radar", JSON.toJSONString(alarmInfo));
+ // log.info("鎶ヨ淇℃伅锛�" + "銆恑d銆�" + id + "銆恘ame銆�" + alarmPointName + "銆恆larmType銆�" + alarmType + "銆恆larmTime銆�" + alarmTime + "銆恉istance銆�" + Distance + "銆怭銆�" + fTx + "銆怲銆�" + fTy + "銆怷銆�" + alarmXY[0] + "銆怸銆�" + alarmXY[1]);
+ ArdAlarmRadar ardAlarmRadar = new ArdAlarmRadar();
+ ardAlarmRadar.setTargetId(id);
+ ardAlarmRadar.setName(alarmPointName + "(" + name + ")");
+ ardAlarmRadar.setLongitude(alarmXY[0]);
+ ardAlarmRadar.setLatitude(alarmXY[1]);
+ ardAlarmRadar.setAlarmType(alarmType);
+ radarAlarmInfos.add(ardAlarmRadar);
}
+ RadarAlarmData radarAlarmData = new RadarAlarmData();
+ radarAlarmData.setRadarId(id);
+ radarAlarmData.setAlarmTime(alarmTime);
+ radarAlarmData.setArdAlarmRadars(radarAlarmInfos);
+ MqttConsumer.publish(2, false, "radar", JSON.toJSONString(radarAlarmData));
}
} catch (Exception ex) {
log.error(ex.getMessage());
}
}
+
/**
* byte鏁扮粍杞琭loat
*/
--
Gitblit v1.9.3