diff --git a/sec-api/src/main/java/com/imdroid/secapi/dto/GnssDevice.java b/sec-api/src/main/java/com/imdroid/secapi/dto/GnssDevice.java index 044aa7b8..0e6f5463 100644 --- a/sec-api/src/main/java/com/imdroid/secapi/dto/GnssDevice.java +++ b/sec-api/src/main/java/com/imdroid/secapi/dto/GnssDevice.java @@ -64,6 +64,8 @@ public class GnssDevice { private Double iposn; //初始位置 private Double iposd; //初始位置 + private Boolean forward_to_ntrip; // 是否转发至NtripCaster,默认false + private Double ecefx; private Double ecefy; private Double ecefz; diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D331RtcmMessageExecutor.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D331RtcmMessageExecutor.java index 7287ef55..0af518ef 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D331RtcmMessageExecutor.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D331RtcmMessageExecutor.java @@ -119,9 +119,12 @@ public class D331RtcmMessageExecutor implements Executor } // 添加NTRIP处理 - byte[] srcdata = message.getSrcData(); - String rtcm = ByteUtil.bytesToHexString(srcdata); - sendToNtrip(id, rtcm); + + if(deviceBs.getForwardToNtrip()) { + byte[] srcdata = message.getSrcData(); + String rtcm = ByteUtil.bytesToHexString(srcdata); + sendToNtrip(id, rtcm); + } ThreadManager.getFixedThreadPool().submit(() -> { // 原始码流输出到日志文件 -- INFO 级别 @@ -264,7 +267,7 @@ public class D331RtcmMessageExecutor implements Executor // 将原始字节转换为16进制字符串用于RTCM提取 //String hexData = ByteUtil.bytesToHexString(rawData); //System.out.println(hexData); - + // 提取RTCM数据并发送到NtripServer,使用设备ID作为挂载点 Optional.ofNullable(RtcmGgaUtil.getRtcms(hexData)) .ifPresent(rtcm -> { diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/ntrip/UdpNtripServer.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/ntrip/UdpNtripServer.java index efb64fdc..fe4398a3 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/ntrip/UdpNtripServer.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/ntrip/UdpNtripServer.java @@ -20,6 +20,8 @@ public class UdpNtripServer { private final Logger logger = LoggerFactory.getLogger(UdpNtripServer.class); @Value("${ntrip_server.port:9903}") private Integer port; + @Value("${ntrip_server.host:localhost}") + private String host; private DatagramSocket socket; private DatagramPacket outPacket; @@ -33,7 +35,7 @@ public class UdpNtripServer { try{ //随机端口 if(socket == null) socket = new DatagramSocket(); - if(outPacket == null) outPacket = new DatagramPacket(new byte[0],0, InetAddress.getByName("localhost"),port); + if(outPacket == null) outPacket = new DatagramPacket(new byte[0],0, InetAddress.getByName(host),port); outPacket.setData(encode(ByteUtil.addBytes(mount.getBytes(), ByteUtil.hexStringTobyte(hexRtcm)))); socket.send(outPacket); }catch (Exception e){ diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/Device.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/Device.java index 6a281edc..140bbfeb 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/Device.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/Device.java @@ -80,7 +80,8 @@ public class Device { // 日志记录控制 Short loggingmode; - + // NtripCaster 推送控制 + Boolean forwardToNtrip = false; int lastRxHead = 0; int fixedNum = 0; diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/LocalDeviceServiceImpl.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/LocalDeviceServiceImpl.java index 21329cfc..c75cd413 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/LocalDeviceServiceImpl.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/LocalDeviceServiceImpl.java @@ -51,6 +51,7 @@ public class LocalDeviceServiceImpl implements DeviceService { device.setEcefy(gnssDevice.getEcefy()); device.setEcefz(gnssDevice.getEcefz()); device.setLoggingmode(gnssDevice.getLoggingmode()); + device.setForwardToNtrip(gnssDevice.getForward_to_ntrip()); return device; } diff --git a/sec-beidou/src/main/resources/db/schema.sql b/sec-beidou/src/main/resources/db/schema.sql index 1897f843..27ba6c51 100644 --- a/sec-beidou/src/main/resources/db/schema.sql +++ b/sec-beidou/src/main/resources/db/schema.sql @@ -72,6 +72,7 @@ CREATE TABLE IF NOT EXISTS `gnssdevices` ( `has_battery` bit(1) DEFAULT 0 COMMENT '是否内置电池', `change_flag` int DEFAULT 0 COMMENT '参数改变标识', `voltage_factor` tinyint DEFAULT NULL COMMENT '分压比', + `forward_to_ntrip` bit(1) DEFAULT 0 COMMENT '用于判断是否发送到NtripCaster', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/sec-beidou/src/main/resources/templates/page/gnss_dev_cfg.html b/sec-beidou/src/main/resources/templates/page/gnss_dev_cfg.html index 4af64342..d9fe7d68 100644 --- a/sec-beidou/src/main/resources/templates/page/gnss_dev_cfg.html +++ b/sec-beidou/src/main/resources/templates/page/gnss_dev_cfg.html @@ -147,6 +147,7 @@ {field: 'tenantname', title: '所属组织', width: 120}, {field: 'fwd_group_id', title: '推送组', width: 80}, {field: 'fwd_group_id2', title: '推送2', width: 80}, + {field: 'forward_to_ntrip', title: '发送至NtripCaster', width: 120, templet: '#ntripTrans'}, {field: 'opmode', title: '使用状态', width: 80,templet: '#modeTrans'}, {field: 'syn', title: '参数同步', width: 80,templet: '#synTrans'}, {field: 'model', title: '型号', width: 80,templet: "
{{d.model==0?'G505':'G510'}}
"}, @@ -289,5 +290,13 @@ {{# } }} + + \ No newline at end of file diff --git a/sec-beidou/src/main/resources/templates/page/table/gnss_add_dev.html b/sec-beidou/src/main/resources/templates/page/table/gnss_add_dev.html index dbcb45fe..327e25ce 100644 --- a/sec-beidou/src/main/resources/templates/page/table/gnss_add_dev.html +++ b/sec-beidou/src/main/resources/templates/page/table/gnss_add_dev.html @@ -127,6 +127,15 @@ +
+ +
+ +
+

@@ -193,6 +202,7 @@ +