From 69e489ec87a08fa0eaef37ab6c1692a9a8538fc3 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期一, 16 六月 2025 09:23:47 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/SiemensCrnThread.java |   33 ++++++++++++++++++++++++++++++---
 1 files changed, 30 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 d55ff16..654042f 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -278,12 +278,39 @@
 //        array[9] = command.getSourceStaNo();
 //        array[10] = command.getDestinationStaNo();
         array[9] = command.getCommand();
-        OperateResult result = siemensNet.Write("DB100.0", array);
+
+        OperateResult result = null;
+        int idx = 0;
+        do {
+            OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 4);
+            if (resultRead.IsSuccess) {
+                short taskNo = siemensNet.getByteTransform().TransInt16(resultRead.Content, 2);
+                if(taskNo == 0) {
+                    result = siemensNet.Write("DB100.0", array);
+                }else {
+                    break;
+                }
+            }
+            idx++;
+            Thread.sleep(500L);
+        } while (idx < 5);
 
         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