From a8990be617f61ff8467c5b7cc6a0dfd1493607c5 Mon Sep 17 00:00:00 2001
From: TQS <56479841@qq.com>
Date: 星期四, 27 二月 2025 09:11:30 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/SiemensCrnThread.java      |   32 +++++++++++++++-
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   46 +++++++++++++++++++----
 src/main/java/com/zy/core/model/protocol/CrnProtocol.java   |    2 +
 3 files changed, 70 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index bf4a9f5..814365d 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -272,9 +272,6 @@
                             }else if (inSta.getStaNo().equals(213)){
                                 staProtocol.setWorkNo((short)9995);
                                 staProtocol.setStaNo((short)214);
-                            }else {
-                                staProtocol.setWorkNo((short)9995);
-                                staProtocol.setStaNo(inSta.getBackSta().shortValue());
                             }
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -4950,9 +4947,25 @@
 //                                    }
                                     }
                                 } else {
-                                    // 鍏ュ簱妯″紡
-                                    devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
-
+                                    CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, 1);
+                                    CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+                                    if (crnProtocol != null) {
+                                        if (crnProtocol.getTaskNo() != 0) {
+                                            if (crnProtocol.isStatusEnd()){
+                                                // 鍑哄簱妯″紡
+                                                devpThread.ioModeOf3F = IoModeType.PAKOUT_MODE;
+                                            }  else {
+                                                // 鍏ュ簱妯″紡
+                                                devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
+                                            }
+                                        } else {
+                                            // 鍏ュ簱妯″紡
+                                            devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
+                                        }
+                                    } else {
+                                        // 鍏ュ簱妯″紡
+                                        devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
+                                    }
                                 }
                             }
                             break;
@@ -4979,8 +4992,25 @@
 //                                    }
                                     }
                                 } else {
-                                    // 鍏ュ簱妯″紡
-                                    devpThread.ioModeOf4F = IoModeType.PAKIN_MODE;
+                                    CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, 3);
+                                    CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+                                    if (crnProtocol != null) {
+                                        if (crnProtocol.getTaskNo() != 0) {
+                                            if (crnProtocol.isStatusEnd()){
+                                                // 鍑哄簱妯″紡
+                                                devpThread.ioModeOf3F = IoModeType.PAKOUT_MODE;
+                                            }  else {
+                                                // 鍏ュ簱妯″紡
+                                                devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
+                                            }
+                                        } else {
+                                            // 鍏ュ簱妯″紡
+                                            devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
+                                        }
+                                    } else {
+                                        // 鍏ュ簱妯″紡
+                                        devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
+                                    }
                                 }
                             }
                             break;
diff --git a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
index e1dcbd9..1625bcd 100644
--- a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
@@ -57,6 +57,8 @@
      */
     public Short status;
 
+    public boolean statusEnd = false;
+
     /**
      * 鐘舵�佹灇涓�
      */
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index a308273..8308ec7 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -152,6 +152,7 @@
                     crnProtocol = new CrnProtocol();
                     crnProtocol.setCrnNo(this.getSlave().getId());
                 }
+                crnProtocol.setCrnNo(this.getSlave().getId());
                 crnProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0));
                 crnProtocol.setTaskNo(siemensNet.getByteTransform().TransInt16(result.Content, 2));
                 crnProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 4));
@@ -173,11 +174,38 @@
                 crnProtocol.setYDistance(siemensNet.getByteTransform().TransSingle(result.Content, 44));
                 crnProtocol.setXDuration(siemensNet.getByteTransform().TransSingle(result.Content, 48));
                 crnProtocol.setYDuration(siemensNet.getByteTransform().TransSingle(result.Content, 52));
+                crnProtocol.setStatusEnd(false);
+
+                try{
+                    OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20);
+                    if (resultRead.IsSuccess) {
+                        CrnCommand one = new CrnCommand();
+                        one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2));
+                        one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4));
+                        one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6));
+                        one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));
+                        one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 10));
+                        one.setDestinationPosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 12));
+                        one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14));
+                        one.setDestinationPosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 16));
+                        if (this.slave.getId() == 1){
+                            if (one.getDestinationPosX() == 3 && one.getDestinationPosY() == 2 && one.getDestinationPosZ() == 1){
+                                crnProtocol.setStatusEnd(true);
+                            }
+                        } else if (this.slave.getId() == 3){
+                            if (one.getDestinationPosX() == 19 && one.getDestinationPosY() == 6 && one.getDestinationPosZ() == 1){
+                                crnProtocol.setStatusEnd(true);
+                            }
+                        }
+                    }
+                } catch (Exception e){ }
 
                 OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
                 // 澶嶄綅淇″彿
                 if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) {
+                    News.error("---绗竴姝ャ�乕鍫嗗灈鏈哄彿锛歿}, 宸ヤ綔鍙凤細{}, 杞借揣鍙颁俊鍙�:{}]==>> 鐘舵�佷负10锛岀瓑寰呯‘璁わ紒锛�",
+                            slave.getId(),crnProtocol.getTaskNo(), crnProtocol.getLoaded()==1 ? "鏈夌墿" : "鏃犵墿");
                     if (resetFlag) {
                         CrnCommand crnCommand = new CrnCommand();
                         crnCommand.setAckFinish((short)1);
@@ -261,7 +289,7 @@
 
         if(!result.IsSuccess){
             log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(crnCommand));
-            MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand));
+//            MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand));
             Thread.sleep(100);
             readStatus();
             return false;
@@ -287,7 +315,7 @@
             ){
                 News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
                 News.error("鍫嗗灈鏈哄懡浠ゅ洖璇诲け璐ュ悗锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(crnCommand));
-                MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand));
+//                MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand));
                 Thread.sleep(100);
                 readStatus();
                 return false;

--
Gitblit v1.9.1