From a8a90fd2d5040e66cc66b3da122a7f82561ff6f6 Mon Sep 17 00:00:00 2001
From: 826220679@qq.com <826220679@qq.com>
Date: 星期六, 09 八月 2025 23:32:29 +0800
Subject: [PATCH] 优化了欢迎页面

---
 src/dell55AAData/Dell55AA02Parser.java |   66 +++++++++++++++++++++++++++++++++
 1 files changed, 66 insertions(+), 0 deletions(-)

diff --git a/src/dell55AAData/Dell55AA02Parser.java b/src/dell55AAData/Dell55AA02Parser.java
new file mode 100644
index 0000000..741ae5e
--- /dev/null
+++ b/src/dell55AAData/Dell55AA02Parser.java
@@ -0,0 +1,66 @@
+package dell55AAData;
+
+import dell_targets.Dell_BaseStation;
+
+public class Dell55AA02Parser {
+	private static final String EXPECTED_HEADER = "55AA02";
+	private static final int MIN_LENGTH = 36; // 18字节 * 2字符/字节
+	private static final int BASE_ID_START = 8;   // 基站ID起始位置(第4字节)
+	private static final int SYNC_STATUS_START = 12; // 同步状态起始位置(第5字节)
+	private static final int PRESSURE_START = 14; // 气压值起始位置(第6字节)
+
+	/**
+	 * 解析55AA02格式的基站数据
+	 * @param message 接收到的数据(十六进制字符串)
+	 */
+	public static void parseAndUpdate(String message) {
+		// 1. 基础校验
+		if (message == null || message.length() < MIN_LENGTH) {
+			return;
+		}
+
+		// 2. 头部校验(固定开头字符串)
+		for (int i = 0; i < EXPECTED_HEADER.length(); i++) {
+			if (message.charAt(i) != EXPECTED_HEADER.charAt(i)) {
+				return;
+			}
+		}
+
+		// 3. 解析基站ID(原始数据字符串)
+		String baseId = new String(new char[]{
+				message.charAt(BASE_ID_START),
+				message.charAt(BASE_ID_START + 1),
+				message.charAt(BASE_ID_START + 2),
+				message.charAt(BASE_ID_START + 3)
+		});
+
+		// 4. 解析同步状态(1字节)
+		char syncChar = message.charAt(SYNC_STATUS_START + 1); // 取状态字符
+		String syncStatus = (syncChar == '0') ? "0" : "1";
+
+		// 5. 解析气压值(4字节小端序)
+		int pressure = 0;
+		for (int i = 0; i < 8; i += 2) {
+			int idx = PRESSURE_START + i;
+			// 使用HexUtils的快速转换方法
+			int byteValue = HexUtils.fastHexToByte(message.charAt(idx), message.charAt(idx + 1));
+			pressure |= (byteValue << (i * 4)); // 小端合并
+		}
+		String pressureStr = String.valueOf(pressure);
+
+		// 6. 更新基站数据		
+		updateBaseStationData(baseId, syncStatus ,pressureStr);
+	}
+
+	/**
+	 * 更新基站数据
+	 * @param baseId 基站ID
+	 * @param syncStatus 同步状态
+	 * @param pressure 气压值字符串
+	 */
+	private static void updateBaseStationData(String baseId, String syncStatus, String pressure) {
+		Dell_BaseStation.updateBaseStationProperty(baseId, "syncStatus", syncStatus);
+		Dell_BaseStation.updateBaseStationProperty(baseId, "barometerReading", pressure);
+	}
+
+}
\ No newline at end of file

--
Gitblit v1.9.3