From cbeff29a3261cb13ed3c5aada8bbd9cc4c1fee72 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期二, 22 七月 2025 09:57:48 +0800 Subject: [PATCH] #空托盘程序 --- src/main/java/com/zy/core/thread/SiemensCrnThread.java | 35 +++++++++++++++++++++++++++++++++-- 1 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java index fc544d8..64dd38d 100644 --- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java +++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java @@ -278,7 +278,38 @@ // 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) 20); + if (resultRead.IsSuccess) { + if (command.getAckFinish() == 0) { + short taskNo = siemensNet.getByteTransform().TransInt16(resultRead.Content, 2); + short taskMode = siemensNet.getByteTransform().TransInt16(resultRead.Content, 4); + short sourcePosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 6); + short sourcePosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 8); + short sourcePosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 10); + short destinationPosX = siemensNet.getByteTransform().TransInt16(resultRead.Content, 12); + short destinationPosY = siemensNet.getByteTransform().TransInt16(resultRead.Content, 14); + short destinationPosZ = siemensNet.getByteTransform().TransInt16(resultRead.Content, 16); + if(taskNo == 0 || taskMode == 0 || sourcePosX == 0 || sourcePosY == 0 || sourcePosZ == 0 || destinationPosX == 0 || destinationPosY == 0 || destinationPosZ == 0) { + result = siemensNet.Write("DB100.0", array); + }else { + break; + } + }else { + short ackFinish = siemensNet.getByteTransform().TransInt16(resultRead.Content, 0); + if(ackFinish != command.getAckFinish()) { + result = siemensNet.Write("DB100.0", array); + }else { + break; + } + } + } + idx++; + Thread.sleep(500L); + } while (idx < 5); if (command.getAckFinish() == 0) { short commandFinish = 1; @@ -298,6 +329,7 @@ } while (i < 5); } + this.crnProtocol.setLastCommandTime(System.currentTimeMillis()); try { // 鏃ュ織璁板綍 BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class); @@ -333,7 +365,6 @@ return false; } } - @Override public void close() { -- Gitblit v1.9.1