‘liusuyi’
2023-12-28 8f224dbf1a1bd1a65dead7ceda8dd0a3fa567115
src/main/java/com/ard/alarm/radar/controller/RadarController.java
@@ -41,39 +41,38 @@
        if (ardEquipRadar == null) {
            return AjaxResult.error("雷达不存在");
        }
        Channel channel = (Channel)ClientInitialize.SuccessConnectMap.get(ardEquipRadar.getId());
        if (channel==null)
        {
        Channel channel = ClientInitialize.SucChannelMap.get(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort());
        if (channel == null) {
            return AjaxResult.error("雷达未连接");
        }
        Double longitude = ardEquipRadar.getLongitude();//雷达经度
        Double latitude = ardEquipRadar.getLatitude();//雷达纬度
        Double altitude = ardEquipRadar.getAltitude();//雷达高度
        //计算水平角度
        float p = (float)GisUtils.getNorthAngle(longitude, latitude, targetPosition[0], targetPosition[1]);
        float p = (float) GisUtils.getNorthAngle(longitude, latitude, targetPosition[0], targetPosition[1]);
        //计算垂直角度
        double[] radarPosition = new double[2];
        radarPosition[0] = longitude;
        radarPosition[1] = latitude;
        double distance = GisUtils.getDistance(radarPosition, targetPosition);
        float angleInRadians = (float)Math.atan(distance / altitude);
        float t = (90-(float)Math.toDegrees(angleInRadians))*-1;
        log.debug("distance:"+distance);
        log.debug("p:"+p);
        log.debug("t:"+t);
        float angleInRadians = (float) Math.atan(distance / altitude);
        float t = (90 - (float) Math.toDegrees(angleInRadians)) * -1;
        log.debug("distance:" + distance);
        log.debug("p:" + p);
        log.debug("t:" + t);
        //发送告警前端的角度提示
        byte[] header = {0x01, 0x02, 0x01};//包头
        byte[] payloadHeader = {0x10, 0x03, 0x20, 0x00};//负载头
        byte[] distanceBytes = ByteUtils.decimalToBytes((int)distance);
        distanceBytes=ByteUtils.toLittleEndian(distanceBytes);
        byte[] distanceBytes = ByteUtils.decimalToBytes((int) distance);
        distanceBytes = ByteUtils.toLittleEndian(distanceBytes);
        byte[] pBytes = ByteUtils.floatToBytes(p);
        pBytes=ByteUtils.toLittleEndian(pBytes);
        pBytes = ByteUtils.toLittleEndian(pBytes);
        byte[] tBytes = ByteUtils.floatToBytes(t);
        tBytes=ByteUtils.toLittleEndian(tBytes);
        byte[] resBytes=new byte[20];
        byte[] payloadBody = ByteUtils.appendArrays(distanceBytes,pBytes,tBytes,resBytes);//负载
        tBytes = ByteUtils.toLittleEndian(tBytes);
        byte[] resBytes = new byte[20];
        byte[] payloadBody = ByteUtils.appendArrays(distanceBytes, pBytes, tBytes, resBytes);//负载
        byte[] payload = ByteUtils.appendArrays(payloadHeader,payloadBody);//负载头+负载
        byte[] payload = ByteUtils.appendArrays(payloadHeader, payloadBody);//负载头+负载
        byte[] payloadCrc32 = ByteUtils.parseCrc32(payload);//负载头+负载的crc32校验
        byte[] footer = {0x01, 0x02, 0x00};//包尾
        byte[] data = ByteUtils.appendArrays(header, payload, payloadCrc32, footer);