From 27535fc82e1311e26083329b8b5ad1f6ac855c97 Mon Sep 17 00:00:00 2001 From: yarnom Date: Thu, 13 Nov 2025 01:10:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DGeoidSeparation?= =?UTF-8?q?=E6=95=B0=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/imdroid/secapi/client/RtkrcvClient.java | 3 +++ .../imdroid/sideslope/rtkrcv/RtkrcvController.java | 13 +++++++++++++ .../com/imdroid/sideslope/rtkrcv/RtkrcvManager.java | 3 ++- .../beidou/controller/RtkrcvProxyController.java | 6 ++++++ .../src/main/resources/templates/page/rtkrcv.html | 7 +++++-- 5 files changed, 29 insertions(+), 3 deletions(-) diff --git a/sec-api/src/main/java/com/imdroid/secapi/client/RtkrcvClient.java b/sec-api/src/main/java/com/imdroid/secapi/client/RtkrcvClient.java index 38677d8b..67309e83 100644 --- a/sec-api/src/main/java/com/imdroid/secapi/client/RtkrcvClient.java +++ b/sec-api/src/main/java/com/imdroid/secapi/client/RtkrcvClient.java @@ -16,4 +16,7 @@ public interface RtkrcvClient { @GetMapping("/rtk/log_exists") Boolean logExists(@RequestParam("device_id") String deviceId); + + @GetMapping("/rtk/gngga") + java.util.Map gngga(@RequestParam("device_id") String deviceId); } diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/rtkrcv/RtkrcvController.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/rtkrcv/RtkrcvController.java index 597bc290..b7dad354 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/rtkrcv/RtkrcvController.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/rtkrcv/RtkrcvController.java @@ -26,4 +26,17 @@ public class RtkrcvController { java.nio.file.Path p = java.nio.file.Paths.get("/opt/rtk/"+deviceId+"/rtkrcv.log"); return java.nio.file.Files.exists(p); } + + @GetMapping("/gngga") + public java.util.Map gngga(@RequestParam("device_id") String deviceId){ + java.util.Map r = new java.util.HashMap<>(); + com.imdroid.sideslope.service.Device d = manager.deviceService.findByDeviceId(deviceId); + if(d!=null){ + r.put("lat", d.getLatitude()); + r.put("lon", d.getLongitude()); + r.put("alt", d.getAltitude()); + r.put("geo", d.getGeoidSeparation()); + } + return r; + } } diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/rtkrcv/RtkrcvManager.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/rtkrcv/RtkrcvManager.java index c0741bf5..c9dbf82e 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/rtkrcv/RtkrcvManager.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/rtkrcv/RtkrcvManager.java @@ -6,6 +6,7 @@ import com.imdroid.secapi.dto.RtkGroup; import com.imdroid.secapi.dto.RtkGroupMapper; import com.imdroid.secapi.dto.RtkProfile; import com.imdroid.secapi.dto.RtkProfileMapper; +import com.imdroid.sideslope.service.Device; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; @@ -45,7 +46,7 @@ public class RtkrcvManager { ensureDefaults(profile, deviceId); String retHint = "ok"; try{ - com.imdroid.sideslope.service.Device dev = deviceService.findByDeviceId(deviceId); + Device dev = deviceService.findByDeviceId(deviceId); if(dev!=null){ Double lat = dev.getLatitude()==null?0.0:dev.getLatitude(); Double lon = dev.getLongitude()==null?0.0:dev.getLongitude(); diff --git a/sec-beidou/src/main/java/com/imdroid/beidou/controller/RtkrcvProxyController.java b/sec-beidou/src/main/java/com/imdroid/beidou/controller/RtkrcvProxyController.java index a2251975..92fef96c 100644 --- a/sec-beidou/src/main/java/com/imdroid/beidou/controller/RtkrcvProxyController.java +++ b/sec-beidou/src/main/java/com/imdroid/beidou/controller/RtkrcvProxyController.java @@ -41,4 +41,10 @@ public class RtkrcvProxyController { Boolean exists = rtkrcvClient.logExists(deviceId); return exists != null && exists; } + + @GetMapping("/rtk/gngga") + @ResponseBody + public java.util.Map gngga(@RequestParam("device_id") String deviceId){ + return rtkrcvClient.gngga(deviceId); + } } diff --git a/sec-beidou/src/main/resources/templates/page/rtkrcv.html b/sec-beidou/src/main/resources/templates/page/rtkrcv.html index 7a1f4d32..6d1e0fc9 100644 --- a/sec-beidou/src/main/resources/templates/page/rtkrcv.html +++ b/sec-beidou/src/main/resources/templates/page/rtkrcv.html @@ -346,6 +346,7 @@ layui.use(['form','table','element','layer','transfer'], function(){ var rtkWs = null; var rtkSelectedDevice = ''; var rtkRunning = false; + var rtkGnggaTimer = null; function connectRtkWs(){ if(rtkWs && rtkWs.readyState === WebSocket.OPEN) return; var curPath = window.document.location.href; @@ -408,6 +409,8 @@ layui.use(['form','table','element','layer','transfer'], function(){ }; } function closeRtkWs(){ if(rtkWs){ try{ rtkWs.close(); }catch(e){} rtkWs=null; } } + function startGnggaTimer(){ if(rtkGnggaTimer) clearInterval(rtkGnggaTimer); rtkGnggaTimer = setInterval(function(){ if(!rtkSelectedDevice) return; $.get('/rtk/gngga',{device_id: rtkSelectedDevice}, function(res){ if(res){ var gtxt = 'lat='+(res.lat!=null?res.lat:0)+', lon='+(res.lon!=null?res.lon:0)+', alt='+(res.alt!=null?res.alt:0)+', geo='+(res.geo!=null?res.geo:0); $('#rtk-gngga').text('GNGGA: '+gtxt); } }); }, 5000); } + function stopGnggaTimer(){ if(rtkGnggaTimer){ clearInterval(rtkGnggaTimer); rtkGnggaTimer=null; } } function loadRtkGroups(){ $.get('/rtk/group/list', {page:1,limit:1000}, function(res){ @@ -458,7 +461,7 @@ layui.use(['form','table','element','layer','transfer'], function(){ $.post('/rtk/start', {device_id: rtkSelectedDevice, clear_log: clear}, function(res){ if(res && res.code === 0){ if(res.data === 'ok' || res.data === 'all_zero'){ - connectRtkWs(); rtkRunning = true; updateToggleBtn(); + connectRtkWs(); startGnggaTimer(); rtkRunning = true; updateToggleBtn(); if(res.data === 'all_zero'){ layer.msg('GNGGA全零,使用默认配置启动'); } } else { layer.msg(res.data||'已处理'); @@ -479,7 +482,7 @@ layui.use(['form','table','element','layer','transfer'], function(){ } else { $.post('/rtk/stop', {device_id: rtkSelectedDevice}, function(){ rtkRunning = false; updateToggleBtn(); - closeRtkWs(); + closeRtkWs(); stopGnggaTimer(); }); } });