diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D3F0SelfCheckMessageExecutor.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D3F0SelfCheckMessageExecutor.java index 53e84877..c24b20cf 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D3F0SelfCheckMessageExecutor.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D3F0SelfCheckMessageExecutor.java @@ -4,10 +4,7 @@ import com.imdroid.common.util.DataTypeUtil; import com.imdroid.common.util.HexUtil; import com.imdroid.common.util.ThreadManager; import com.imdroid.secapi.client.BeidouClient; -import com.imdroid.secapi.dto.GnssDevice; -import com.imdroid.secapi.dto.GnssMsg; -import com.imdroid.secapi.dto.GnssMsgMapper; -import com.imdroid.secapi.dto.GnssStatus; +import com.imdroid.secapi.dto.*; import com.imdroid.sideslope.message.D3F0SelfCheckMessage; import com.imdroid.sideslope.sal.Device; import com.imdroid.sideslope.sal.DeviceService; @@ -104,8 +101,8 @@ public class D3F0SelfCheckMessageExecutor implements Executor= 6){ - //sendF9PColdStartCommand(device); + if((device.getWarningcode()&WarningCfg.TYPE_NO_FIXED_RESULT) !=0){ + sendF9PColdStartCommand(device); logger.info("{}: 连续{}次无固定解和浮点解,发送 F9P 冷启动指令",device.getDeviceId(), device.getNoFixedAndFloatResult()); device.clearNoResultStat(); } diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/sal/Device.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/sal/Device.java index cbf8c365..ad270ba0 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/sal/Device.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/sal/Device.java @@ -74,6 +74,7 @@ public class Device { int fixedNum = 0; int floatNum = 0; LocalDateTime lastValidCalcDataTime; //最近一次有效解 + int warningcode = 0; public void updateRx(int head, int bytes,int count){ lastRxHead = head; @@ -144,6 +145,7 @@ public class Device { public void clearNoResultStat(){ noFixedAndFloatResult = 0; + warningcode = 0; } } diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/WarningServiceImpl.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/WarningServiceImpl.java index d1a17424..2f6f4559 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/WarningServiceImpl.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/WarningServiceImpl.java @@ -108,6 +108,7 @@ public class WarningServiceImpl implements WarningService { // 根据告警码确定告警级别 status.setWarning(getWarningLevel(status.getWarningcode())); gnssStatusMapper.updateById(status); + device.setWarningcode(status.getWarningcode()); } } /*** @@ -237,6 +238,10 @@ public class WarningServiceImpl implements WarningService { if(status != null) { boolean isUpdated = false; // 清除b562告警 + if((status.getWarningcode() & WarningCfg.TYPE_CONT_INVALID_RESULT) !=0 ) { + status.setWarningcode(status.getWarningcode() & ~WarningCfg.TYPE_CONT_INVALID_RESULT); + isUpdated = true; + } if((status.getWarningcode() & WarningCfg.TYPE_NO_FIXED_RESULT) !=0 ) { status.setWarningcode(status.getWarningcode() & ~WarningCfg.TYPE_NO_FIXED_RESULT); isUpdated = true; @@ -253,6 +258,7 @@ public class WarningServiceImpl implements WarningService { if(isUpdated) { status.setWarning(getWarningLevel(status.getWarningcode())); gnssStatusMapper.updateById(status); + device.setWarningcode(status.getWarningcode()); } } }