修正备选基站推送bug
This commit is contained in:
parent
0a5bb0d7a1
commit
483aeb9d76
@ -14,7 +14,6 @@ import com.imdroid.sideslope.server.DeviceChannel;
|
||||
import com.imdroid.sideslope.server.OnlineChannels;
|
||||
import com.imdroid.sideslope.service.DataPersistService;
|
||||
import com.imdroid.sideslope.bd.RtcmGgaUtil;
|
||||
//import com.imdroid.common.util.RtcmGgaUtil;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import org.slf4j.Logger;
|
||||
@ -73,18 +72,35 @@ public class D331RtcmMessageExecutor implements Executor<D331RtcmMessage, Void>
|
||||
for (Device device : allDevices) {
|
||||
if (device.getOpMode() != GnssDevice.OP_MODE_USE) continue;
|
||||
String deviceId = device.getDeviceId();
|
||||
System.out.println(deviceId);
|
||||
|
||||
// 检查该设备是否应该接收此基站的数据
|
||||
String primaryBaseId = device.getParentId();
|
||||
String backupBaseId = device.getParentId1();
|
||||
//System.out.println(primaryBaseId);
|
||||
//System.out.println(backupBaseId);
|
||||
|
||||
// 如果当前基站是该设备的备选基站,需要检查主基站是否离线
|
||||
if (id.equals(backupBaseId)) {
|
||||
byte[] modifyData = forwardBytes.clone();
|
||||
Device primaryBase = deviceService.findByDeviceId(primaryBaseId);
|
||||
// 如果主基站仍然在线,则跳过备选基站的数据
|
||||
if (primaryBase != null && isBaseStationOnline(primaryBase)) {
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
String hexPrimaryBase = String.format("%06x",Integer.parseInt(primaryBaseId));
|
||||
System.out.println(hexPrimaryBase);
|
||||
|
||||
modifyData[5] = (byte) Integer.parseInt(hexPrimaryBase.substring(0,2),16);
|
||||
modifyData[6] = (byte) Integer.parseInt(hexPrimaryBase.substring(2,4),16);
|
||||
modifyData[7] = (byte) Integer.parseInt(hexPrimaryBase.substring(4,6),16);
|
||||
|
||||
forwardBytes = modifyData;
|
||||
|
||||
// 打印修改后的完整数据(16进制形式)
|
||||
//logger.info("Modified D331 data (HEX): {}", ByteUtil.bytesToHexString(forwardBytes));
|
||||
}
|
||||
}
|
||||
|
||||
// 获取设备通道并发送数据
|
||||
@ -174,8 +190,8 @@ public class D331RtcmMessageExecutor implements Executor<D331RtcmMessage, Void>
|
||||
// 提取RTCM数据并发送到NtripServer,使用设备ID作为挂载点
|
||||
Optional.ofNullable(RtcmGgaUtil.getRtcms(hexData))
|
||||
.ifPresent(rtcm -> {
|
||||
System.out.println("挂载点: " + mountpoint);
|
||||
System.out.println("RTCM数据: " + rtcm);
|
||||
//System.out.println("挂载点: " + mountpoint);
|
||||
//System.out.println("RTCM数据: " + rtcm);
|
||||
UdpNtripServer.send(mountpoint, rtcm);
|
||||
});
|
||||
} catch (Exception e) {
|
||||
@ -199,7 +215,7 @@ public class D331RtcmMessageExecutor implements Executor<D331RtcmMessage, Void>
|
||||
|
||||
LocalDateTime now =LocalDateTime.now();
|
||||
return baseStation.getLastRxTime() !=null &&
|
||||
baseStation.getLastRxTime().isAfter(now.minusMinutes(30));
|
||||
baseStation.getLastRxTime().isAfter(now.minusMinutes(10));
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user