From 2743d98b983b7ecd049093931749db749b4b2fe4 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期四, 30 四月 2026 10:54:27 +0800
Subject: [PATCH] #

---
 zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/AGV_12_UP.java |   45 +++++++++++++++++++++++++++++----------------
 1 files changed, 29 insertions(+), 16 deletions(-)

diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/AGV_12_UP.java b/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/AGV_12_UP.java
index c4fc817..766b6bb 100644
--- a/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/AGV_12_UP.java
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/AGV_12_UP.java
@@ -1,7 +1,7 @@
 package com.zy.acs.common.domain.protocol;
 
 import com.zy.acs.framework.common.RadixTools;
-import com.zy.acs.common.constant.CommonConstant;
+import com.zy.acs.common.utils.QrCodeCodecSupport;
 import com.zy.acs.common.utils.Utils;
 import lombok.Data;
 
@@ -24,35 +24,48 @@
 
     @Override
     public void readFromBytes(byte[] bytes) {
+        int qrCodeBytes = QrCodeCodecSupport.qrCodeBytes();
+        int offsetXPos = qrCodeBytes;
+        int offsetYPos = offsetXPos + 2;
+        int groundCodeOffsetPos = offsetYPos + 2;
+        int statusPos = groundCodeOffsetPos + 4;
+        int straightDirectionPos = statusPos + 1;
+        int currentAnglePos = straightDirectionPos + 4;
+        int gyroAnglePos = currentAnglePos + 4;
+        int encoderAnglePos = gyroAnglePos + 4;
+        int currentAltitudePos = encoderAnglePos + 4;
+        int forkLengthPos = currentAltitudePos + 2;
+        int loaderThetaPos = forkLengthPos + 2;
+        int sensorStatusPos = loaderThetaPos + 2;
         //鍦伴潰鐮両D
-        this.qrCode =  Utils.zeroFill(String.valueOf(RadixTools.bytesToInt(Utils.sliceWithReverse(bytes, 0, 4))), CommonConstant.QR_CODE_LEN);;
+        this.qrCode = QrCodeCodecSupport.decode(bytes, 0);
         //鍦伴潰鐮佸亸绉粁
-        this.offsetX = RadixTools.byteToShort(Utils.sliceWithReverse(bytes, 4 , 2));
+        this.offsetX = RadixTools.byteToShort(Utils.sliceWithReverse(bytes, offsetXPos , 2));
         //鍦伴潰鐮佸亸绉粂
-        this.offsetY = RadixTools.byteToShort(Utils.sliceWithReverse(bytes, 6, 2));
+        this.offsetY = RadixTools.byteToShort(Utils.sliceWithReverse(bytes, offsetYPos, 2));
         //鍦伴潰鐮佸亸绉晃�
-        this.groundCodeOffset0 = RadixTools.bytesToInt(Utils.sliceWithReverse(bytes, 8, 4));
+        this.groundCodeOffset0 = RadixTools.bytesToInt(Utils.sliceWithReverse(bytes, groundCodeOffsetPos, 4));
         //褰撳墠鐘舵��
-        this.status = Utils.slice(bytes, 12, 1)[0];
+        this.status = Utils.slice(bytes, statusPos, 1)[0];
         //鐩磋鏂瑰悜鍧愭爣
-        this.straightDirectionPosition = RadixTools.bytesToInt(Utils.sliceWithReverse(bytes, 13, 4));
+        this.straightDirectionPosition = RadixTools.bytesToInt(Utils.sliceWithReverse(bytes, straightDirectionPos, 4));
         //AGV褰撳墠瑙掑害
-//        this.AGVCurrentAngle = RadixTools.bytesToInt(Utils.sliceWithReverse(bytes, 17, 4));
-        this.AGVCurrentAngle = ByteBuffer.wrap(Utils.sliceWithReverse(bytes, 17, 4)).getFloat();
+//        this.AGVCurrentAngle = RadixTools.bytesToInt(Utils.sliceWithReverse(bytes, currentAnglePos, 4));
+        this.AGVCurrentAngle = ByteBuffer.wrap(Utils.sliceWithReverse(bytes, currentAnglePos, 4)).getFloat();
         //闄�铻轰华瑙掑害
-        this.gyroAngle = RadixTools.bytesToInt(Utils.sliceWithReverse(bytes, 21, 4));
+        this.gyroAngle = RadixTools.bytesToInt(Utils.sliceWithReverse(bytes, gyroAnglePos, 4));
         //缂栫爜鍣ㄨ搴�
-        this.encoderAngle = RadixTools.bytesToInt(Utils.sliceWithReverse(bytes, 25, 4));
+        this.encoderAngle = RadixTools.bytesToInt(Utils.sliceWithReverse(bytes, encoderAnglePos, 4));
         //褰撳墠楂樺害
-        this.currentAltitude = RadixTools.byteToShort(Utils.sliceWithReverse(bytes, 29, 2));
+        this.currentAltitude = RadixTools.byteToShort(Utils.sliceWithReverse(bytes, currentAltitudePos, 2));
         //璐у弶浼稿嚭璺濈
-        this.forkLength = RadixTools.byteToShort(Utils.sliceWithReverse(bytes, 31, 2));
+        this.forkLength = RadixTools.byteToShort(Utils.sliceWithReverse(bytes, forkLengthPos, 2));
         //杞借揣鍙版棆杞搴�
-        this.loaderTheta = RadixTools.byteToShort(Utils.sliceWithReverse(bytes, 33, 2));
+        this.loaderTheta = RadixTools.byteToShort(Utils.sliceWithReverse(bytes, loaderThetaPos, 2));
         //浼犳劅鍣ㄧ姸鎬佹爣蹇�
-//        this.sensorStatusFlags = RadixTools.bytesToInt(Utils.sliceWithReverse(bytes, 35, 4));
+//        this.sensorStatusFlags = RadixTools.bytesToInt(Utils.sliceWithReverse(bytes, sensorStatusPos, 4));
 
-        byte[] sensorStatusBytes = Utils.slice(bytes, 35, 4);
+        byte[] sensorStatusBytes = Utils.slice(bytes, sensorStatusPos, 4);
         parseSensorStatue(sensorStatusBytes);
     }
 

--
Gitblit v1.9.1