| | |
| | | import javax.xml.bind.DatatypeConverter; |
| | | import java.net.InetSocketAddress; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | import java.util.concurrent.ScheduledFuture; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | |
| | | byte[] heart = ByteUtils.appendArrays(header, payload, payloadCrc32, footer); |
| | | // byte[] heart = {0x01, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00, (byte) 0x83, (byte) 0x88, 0x5d, 0x71, 0x01, 0x02, 0x00}; |
| | | String hexString = DatatypeConverter.printHexBinary(heart); |
| | | // log.debug("发送心跳:" + hexString); |
| | | // log.debug("发送心跳:" + hexString); |
| | | message.writeBytes(heart); |
| | | context.writeAndFlush(message); |
| | | |
| | |
| | | float fTy = ByteUtils.bytesToFloat(afTy); |
| | | log.debug("垂直角度:" + fTy); |
| | | // 将角度转换为弧度 |
| | | double thetaRadians = Math.toRadians(fTy+90); |
| | | double thetaRadians = Math.toRadians(fTy + 90); |
| | | // 使用正弦函数计算对边长度 |
| | | Distance = Math.sin(thetaRadians) * Distance; |
| | | log.debug("目标投影距离(m):" + Distance); |
| | |
| | | radarAlarmInfos.add(ardAlarmRadar); |
| | | } |
| | | //endregion |
| | | if (StringUtils.isEmpty(alarmTime)) { |
| | | return; |
| | | } |
| | | if (targetNum == 0) { |
| | | return; |
| | | } |
| | | RadarAlarmData radarAlarmData = new RadarAlarmData(); |
| | | radarAlarmData.setRadarId(radarId); |
| | | radarAlarmData.setRadarName(radarName); |
| | | radarAlarmData.setAlarmTime(alarmTime); |
| | | radarAlarmData.setArdAlarmRadars(radarAlarmInfos); |
| | | MqttProducer.publish(2, false, "radar", JSON.toJSONString(radarAlarmData)); |
| | | //抽油机状态MQTT队列 |
| | | radarAlarmData.setArdAlarmRadars(well); |
| | | MqttProducer.publish(2, false, "radarWellData", JSON.toJSONString(radarAlarmData)); |
| | | } |
| | | if (Arrays.equals(cmdId, new byte[]{0x04})) { |
| | | //region抽油机AI状态反馈 |
| | |
| | | well.add(wellAlarm); |
| | | } |
| | | //endregion |
| | | if (StringUtils.isEmpty(alarmTime)) { |
| | | return; |
| | | } |
| | | if (targetNum == 0) { |
| | | return; |
| | | } |
| | | RadarAlarmData radarAlarmData = new RadarAlarmData(); |
| | | radarAlarmData.setRadarId(radarId); |
| | | radarAlarmData.setRadarName(radarName); |
| | | radarAlarmData.setAlarmTime(alarmTime); |
| | | radarAlarmData.setArdAlarmRadars(radarAlarmInfos); |
| | | MqttProducer.publish(2, false, "radar", JSON.toJSONString(radarAlarmData)); |
| | | //抽油机状态MQTT队列 |
| | | radarAlarmData.setArdAlarmRadars(well); |
| | | MqttProducer.publish(2, false, "radarWellData", JSON.toJSONString(radarAlarmData)); |
| | | } |
| | | if (StringUtils.isEmpty(alarmTime)) { |
| | | return; |
| | | if (Arrays.equals(cmdId, new byte[]{0x02})) { |
| | | //region 告警前端发送的强制引导信息 |
| | | byte[] iDistance = Arrays.copyOfRange(data, 4, 8); |
| | | iDistance = ByteUtils.toLittleEndian(iDistance); |
| | | long distance = ByteUtils.bytesToDecimal(iDistance); |
| | | log.info("目标当前距离(m):" + distance); |
| | | byte[] fTx = Arrays.copyOfRange(data, 8, 12); |
| | | fTx = ByteUtils.toLittleEndian(fTx); |
| | | float tx = ByteUtils.bytesToFloat(fTx); |
| | | log.debug("方位:" + tx); |
| | | byte[] fTy = Arrays.copyOfRange(data, 12, 16); |
| | | fTy = ByteUtils.toLittleEndian(fTy); |
| | | float ty= ByteUtils.bytesToFloat(fTy); |
| | | log.debug("俯仰:" + ty); |
| | | Map<String,Object>forceGuideMap=new HashMap<>(); |
| | | forceGuideMap.put("distance",distance); |
| | | forceGuideMap.put("p",tx); |
| | | forceGuideMap.put("t",ty); |
| | | forceGuideMap.put("radarId",radarId); |
| | | forceGuideMap.put("radarName",radarName); |
| | | //endregion |
| | | MqttProducer.publish(2, false, "radarForceGuide", JSON.toJSONString(forceGuideMap)); |
| | | } |
| | | if (targetNum == 0) { |
| | | return; |
| | | } |
| | | RadarAlarmData radarAlarmData = new RadarAlarmData(); |
| | | radarAlarmData.setRadarId(radarId); |
| | | radarAlarmData.setRadarName(radarName); |
| | | radarAlarmData.setAlarmTime(alarmTime); |
| | | radarAlarmData.setArdAlarmRadars(radarAlarmInfos); |
| | | MqttProducer.publish(2, false, "radar", JSON.toJSONString(radarAlarmData)); |
| | | //抽油机状态MQTT队列 |
| | | radarAlarmData.setArdAlarmRadars(well); |
| | | MqttProducer.publish(2, false, "radarWellData", JSON.toJSONString(radarAlarmData)); |
| | | } catch (Exception ex) { |
| | | log.error("雷达报文解析异常:" + ex.getMessage()); |
| | | } |