From 0e77cd7385ea6a55c2a8583600abdf53c781cdf5 Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期三, 24 十二月 2025 17:06:17 +0800
Subject: [PATCH] 新增了找回密码功能
---
src/udpdell/UDPServer.java | 63 ++++++++++++++++++++++++++++++-
1 files changed, 60 insertions(+), 3 deletions(-)
diff --git a/src/udpdell/UDPServer.java b/src/udpdell/UDPServer.java
index 1ee1bde..e63131c 100644
--- a/src/udpdell/UDPServer.java
+++ b/src/udpdell/UDPServer.java
@@ -5,15 +5,18 @@
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;
+import publicway.Gpstoxuzuobiao;
public class UDPServer {
private static final int PORT = 7000; // 榛樿UDP鐩戝惉绔彛
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;
/**
@@ -78,11 +81,20 @@
}
// 妫�鏌ュ寘澶存槸鍚︽纭�
- if (!fields[0].equals("$GNGGA")) {
+ if (!fields[0].equals("$GNGGA") && !fields[0].equals("$GPGGA") && !fields[0].equals("$GBGGA")) {
System.err.println("Invalid message header: " + fields[0]);
return;
}
- System.out.println("鏀跺埌浜嗗樊鍒嗘暟鎹細" + message);
+ int sequence = incrementReceivedPacketCounter();
+ System.out.println("鏀跺埌浜嗗樊鍒嗘暟鎹�(" + sequence + ")锛�" + message);
+
+ // 浣跨敤Gpstoxuzuobiao澶勭悊骞惰幏鍙朮Y鍧愭爣
+ double[] xy = Gpstoxuzuobiao.processGNGGAToXY(message);
+ if (xy != null) {
+ // 杩欓噷鍙互灏哫Y鍧愭爣浼犻�掔粰鍏朵粬鏂规硶浣跨敤
+ // System.out.println("UDP GNGGA -> XY: " + xy[0] + ", " + xy[1]);
+ }
+
Coordinate.parseGNGGAToCoordinateList(message);
int count = Coordinate.coordinates.size();
System.out.println("savenum:" + count);
@@ -90,6 +102,51 @@
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")&&!fields[0].equals("$GPGGA")&&!fields[0].equals("$GBGGA")) {
+ System.err.println("Invalid message header: " + fields[0]);
+ return;
+ }
+ int sequence = incrementReceivedPacketCounter();
+ System.out.println("鏀跺埌浜嗕覆鍙f暟鎹�(" + sequence + ")锛�" + message);
+
+ // 浣跨敤Gpstoxuzuobiao澶勭悊骞惰幏鍙朮Y鍧愭爣
+ double[] xy = Gpstoxuzuobiao.processGNGGAToXY(message);
+ if (xy != null) {
+ // 杩欓噷鍙互灏哫Y鍧愭爣浼犻�掔粰鍏朵粬鏂规硶浣跨敤
+ // System.out.println("Serial GNGGA -> XY: " + xy[0] + ", " + xy[1]);
+ }
+
+ 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;
--
Gitblit v1.10.0