From 8d662de2fd262b3a485f16e197cb4d0ca2a61cdf Mon Sep 17 00:00:00 2001
From: zsh_root <979909237@qq.com>
Date: 星期三, 10 十二月 2025 17:03:47 +0800
Subject: [PATCH] 发布版V1.0
---
src/jiexi/Dell55AA01Parser.java | 60 ++++++++++++++++++++++++++++++------------------------------
1 files changed, 30 insertions(+), 30 deletions(-)
diff --git a/src/jiexi/Dell55AA01Parser.java b/src/jiexi/Dell55AA01Parser.java
index 3963a31..f1ced49 100644
--- a/src/jiexi/Dell55AA01Parser.java
+++ b/src/jiexi/Dell55AA01Parser.java
@@ -1,20 +1,20 @@
package jiexi;
import java.util.Arrays;
public class Dell55AA01Parser {
- // 常量定义
- private static final String EXPECTED_HEADER = "55AA01"; // 协议头
- private static final int MIN_LENGTH = 42; // 最小长度(21字节*2字符)
+ // 甯搁噺瀹氫箟
+ private static final String EXPECTED_HEADER = "55AA01"; // 鍗忚澶�
+ private static final int MIN_LENGTH = 42; // 鏈�灏忛暱搴�(21瀛楄妭*2瀛楃)
private static final ThreadLocal<ParseResult> RESULT_CACHE =
ThreadLocal.withInitial(ParseResult::new);
- // 解析结果类
+ // 瑙f瀽缁撴灉绫�
public static class ParseResult {
- public int sequenceNum; // 序列号
- public String tagId; // 标签ID(4字节小端序)
- public String anchorId; // 锚点ID(4字节小端序)
- public int distance; // 距离(毫米)
- public int power; // 电量(0-100)
- public int buttonPressed; // 按钮状态
+ public int sequenceNum; // 搴忓垪鍙�
+ public String tagId; // 鏍囩ID(4瀛楄妭灏忕搴�)
+ public String anchorId; // 閿氱偣ID(4瀛楄妭灏忕搴�)
+ public int distance; // 璺濈(姣背)
+ public int power; // 鐢甸噺(0-100)
+ public int buttonPressed; // 鎸夐挳鐘舵��
public boolean buttonPressed2;
public void reset() {
sequenceNum = 0;
@@ -28,24 +28,24 @@
}
/**
- * 解析55AA01协议数据
- * @param message 十六进制字符串
- * @return 解析结果(错误时返回null)
+ * 瑙f瀽55AA01鍗忚鏁版嵁
+ * @param message 鍗佸叚杩涘埗瀛楃涓�
+ * @return 瑙f瀽缁撴灉(閿欒鏃惰繑鍥瀗ull)
*/
public static ParseResult parse(String message, String ip, int port) {
if (message == null || message.isEmpty()) {
return null;
}
- // 清洗数据:移除所有非十六进制字符
+ // 娓呮礂鏁版嵁锛氱Щ闄ゆ墍鏈夐潪鍗佸叚杩涘埗瀛楃
char[] cleanedMessage = cleanMessage(message);
- // 数据校验
+ // 鏁版嵁鏍¢獙
if (cleanedMessage == null || cleanedMessage.length < MIN_LENGTH) {
return null;
}
- // 协议头校验 (55AA01)
+ // 鍗忚澶存牎楠� (55AA01)
if (!new String(cleanedMessage, 0, 6).equals(EXPECTED_HEADER)) {
return null;
}
@@ -54,37 +54,37 @@
result.reset();
try {
- if (cleanedMessage.length < 30) { // 确保有足够长度访问charAt(28)
+ if (cleanedMessage.length < 30) { // 纭繚鏈夎冻澶熼暱搴﹁闂甤harAt(28)
return null;
}
- // 解析序列号 (位置8-9)
+ // 瑙f瀽搴忓垪鍙� (浣嶇疆8-9)
result.sequenceNum = HexUtils.fastHexToByte(cleanedMessage[8], cleanedMessage[9]);
- // 解析标签ID (位置10-13, 小端序)
+ // 瑙f瀽鏍囩ID (浣嶇疆10-13, 灏忕搴�)
result.tagId = new String(new char[]{
- cleanedMessage[12], cleanedMessage[13], // 高位
- cleanedMessage[10], cleanedMessage[11] // 低位
+ cleanedMessage[12], cleanedMessage[13], // 楂樹綅
+ cleanedMessage[10], cleanedMessage[11] // 浣庝綅
});
- // 解析锚点ID (位置14-17, 小端序)
+ // 瑙f瀽閿氱偣ID (浣嶇疆14-17, 灏忕搴�)
result.anchorId = new String(new char[]{
- cleanedMessage[16], cleanedMessage[17], // 高位
- cleanedMessage[14], cleanedMessage[15] // 低位
+ cleanedMessage[16], cleanedMessage[17], // 楂樹綅
+ cleanedMessage[14], cleanedMessage[15] // 浣庝綅
});
- // 解析距离 (位置18-25, 4字节小端整数)
- int b0 = HexUtils.fastHexToByte(cleanedMessage[18], cleanedMessage[19]); // 最低位
+ // 瑙f瀽璺濈 (浣嶇疆18-25, 4瀛楄妭灏忕鏁存暟)
+ int b0 = HexUtils.fastHexToByte(cleanedMessage[18], cleanedMessage[19]); // 鏈�浣庝綅
int b1 = HexUtils.fastHexToByte(cleanedMessage[20], cleanedMessage[21]);
int b2 = HexUtils.fastHexToByte(cleanedMessage[22], cleanedMessage[23]);
- int b3 = HexUtils.fastHexToByte(cleanedMessage[24], cleanedMessage[25]); // 最高位
+ int b3 = HexUtils.fastHexToByte(cleanedMessage[24], cleanedMessage[25]); // 鏈�楂樹綅
int raw = (b3 << 24) | (b2 << 16) | (b1 << 8) | b0;
- result.distance = raw; // 保持原始整数值
+ result.distance = raw; // 淇濇寔鍘熷鏁存暟鍊�
- // 解析电量 (位置26-27)
+ // 瑙f瀽鐢甸噺 (浣嶇疆26-27)
result.power = HexUtils.fastHexToByte(cleanedMessage[26], cleanedMessage[27]);
- // 解析按钮状态 (位置28-29)
+ // 瑙f瀽鎸夐挳鐘舵�� (浣嶇疆28-29)
result.buttonPressed = HexUtils.fastHexToByte(cleanedMessage[28], cleanedMessage[29]);
result.buttonPressed2 =result.buttonPressed==1;
--
Gitblit v1.10.0