张世豪
4 天以前 32c98d4855b6178554c787103dc956d161e152b3
src/udpdell/UDPServer.java
@@ -5,6 +5,7 @@
import java.net.SocketException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;
import gecaoji.Device;
import zhuye.Coordinate;
@@ -14,6 +15,8 @@
   private static final int BUFFER_SIZE = 65507; // UDP最大包大小
   private static final int THREAD_POOL_SIZE = 100; // 线程池大小
   private static final AtomicInteger RECEIVED_PACKET_COUNTER = new AtomicInteger(0);
   private static volatile Thread serverThread;
   /**
@@ -82,13 +85,51 @@
         System.err.println("Invalid message header: " + fields[0]);
         return;
      }
      System.out.println("收到了差分数据:" + message);
      int sequence = incrementReceivedPacketCounter();
      System.out.println("收到了差分数据(" + sequence + "):" + message);
      Coordinate.parseGNGGAToCoordinateList(message);
      int count = Coordinate.coordinates.size();
      System.out.println("savenum:" + count);
      Device.updateFromGNGGA(message, fields[15]);
   }
   /**处理串口接收到的数据*/
   public static void processSerialData(String message) {
      String[] fields = message.split(",");
      // 检查字段数量是否完整
      if (fields.length < 15) {
         System.err.println("Invalid serial GNGGA format, expected at least 15 fields but got " + fields.length);
         return;
      }
      // 检查包头是否正确
      if (!fields[0].equals("$GNGGA")) {
         System.err.println("Invalid message header: " + fields[0]);
         return;
      }
      int sequence = incrementReceivedPacketCounter();
      System.out.println("收到了串口数据(" + sequence + "):" + message);
      Coordinate.dellchuankougngga(message);
      int count = Coordinate.coordinates.size();
      System.out.println("savenum:" + count);
      Device.updateFromSerialGNGGA(message);
   }
   private static int incrementReceivedPacketCounter() {
      return RECEIVED_PACKET_COUNTER.updateAndGet(current -> {
         int next = current + 1;
         if (next > 10000 || next <= 0) {
            next = 1;
         }
         return next;
      });
   }
   public static int getReceivedPacketCount() {
      return RECEIVED_PACKET_COUNTER.get();
   }
   private static class PacketProcessor implements Runnable {
      private final DatagramPacket packet;