| | |
| | | import com.ard.alarm.radar.domain.GuideInfo; |
| | | import com.ard.alarm.radar.service.IArdEquipRadarService; |
| | | import com.ard.utils.http.AjaxResult; |
| | | import com.ard.utils.other.ByteUtils; |
| | | import com.ard.utils.other.GisUtils; |
| | | import com.ard.utils.tcp.ClientInitialize; |
| | | import com.ard.utils.util.ByteUtils; |
| | | import com.ard.utils.util.GisUtils; |
| | | import com.ard.utils.netty.tcp.ClientInitialize; |
| | | import io.netty.buffer.ByteBuf; |
| | | import io.netty.channel.Channel; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import static jdk.nashorn.internal.runtime.regexp.joni.Config.log; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @Description: 雷达接口 |
| | |
| | | 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); |
| | | System.out.println(ByteUtils.printHexBinary(data)); |
| | | |
| | | ByteBuf message = channel.alloc().buffer(); |
| | | message.writeBytes(data); |
| | | channel.writeAndFlush(message); |
| | | return AjaxResult.success(); |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("distance",distance); |
| | | map.put("p",p); |
| | | map.put("t",t); |
| | | return AjaxResult.success(map); |
| | | } |
| | | } |
| | | } |