From 9bb69ece62523cb94bfb7d7857b6e1060e6a0f0a Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期日, 15 六月 2025 10:53:27 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/SiemensCrnThread.java |   25 ++++++++++++++++++++++---
 1 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index edbaac5..fc544d8 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -154,7 +154,11 @@
      */
     private void readStatus(){
         try {
-            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 56);
+            short len = 56;
+            if (slave.getId() == 1) {
+                len = 58;
+            }
+            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", len);
             if (result.IsSuccess) {
                 if (null == crnProtocol) {
                     crnProtocol = new CrnProtocol();
@@ -181,6 +185,9 @@
                 crnProtocol.setyDistance(siemensNet.getByteTransform().TransInt16(result.Content, 44));
                 crnProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48));
                 crnProtocol.setyDuration(siemensNet.getByteTransform().TransInt16(result.Content, 52));
+                if (slave.getId() == 1) {
+                    crnProtocol.setCrnLane((int) siemensNet.getByteTransform().TransInt16(result.Content, 56));
+                }
 
                 OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
@@ -275,8 +282,20 @@
 
         if (command.getAckFinish() == 0) {
             short commandFinish = 1;
-            Thread.sleep(100L);
-            result = siemensNet.Write("DB100.18", commandFinish);
+            int i = 0;
+            do {
+                OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 4);
+                OperateResultExOne<byte[]> resultReadConfirm = siemensNet.Read("DB100.18", (short) 2);
+                if (resultRead.IsSuccess && resultReadConfirm.IsSuccess) {
+                    short taskNo = siemensNet.getByteTransform().TransInt16(resultRead.Content, 2);
+                    short confirm = siemensNet.getByteTransform().TransInt16(resultReadConfirm.Content, 0);
+                    if(taskNo != 0 && confirm == 0) {
+                        result = siemensNet.Write("DB100.18", commandFinish);
+                    }
+                }
+                i++;
+                Thread.sleep(500L);
+            } while (i < 5);
         }
 
         try {

--
Gitblit v1.9.1