From dfaf0332889a83f9c8437befdfff32866cf29d5e Mon Sep 17 00:00:00 2001
From: yxFwq <1>
Date: 星期五, 13 六月 2025 15:16:12 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/SiemensDevpThread.java |  147 +++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 135 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index f7690df..e1dcbdc 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -47,6 +47,8 @@
     private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>();
     public boolean charge0;     //璇锋眰鍏呯數
     public boolean charge1;     //璇锋眰鍏呯數
+    private short weight464;
+    private String matnr464;
     private short heartBeatVal = 1;
     public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
         add(100);add(101);add(102);add(103);add(104);add(105);add(106);add(107);
@@ -132,6 +134,9 @@
         add(696);add(697);add(698);add(699);
     }};
 
+    private boolean connectDev = false;
+
+
     /**
      * 鏉$爜鏁伴噺
      */
@@ -165,10 +170,85 @@
         }
     }
 
+
+    /**
+     * 鍒濆鍖栫珯鐐圭姸鎬�
+     */
+    private void initSite() {
+        try{
+            ArrayList<Integer> staNos = getStaNo();
+            // 绔欑偣缂栧彿
+            for (Integer siteId : staNos) {
+                StaProtocol staProtocol = station.get(siteId);
+                if (null == staProtocol) {
+                    staProtocol = new StaProtocol();
+                    staProtocol.setSiteId(siteId);
+                    station.put(siteId, staProtocol);
+                }
+                staProtocol.setSiteId(siteId);
+                staProtocol.setWorkNo(0);    // ID
+                staProtocol.setAutoing(false);      // 鑷姩
+                staProtocol.setLoading(false);      // 鏈夌墿
+                staProtocol.setInEnable(false);     // 鍙叆
+                staProtocol.setOutEnable(false);    // 鍙嚭
+                staProtocol.setEmptyMk(false);      // 绌烘澘淇″彿
+                staProtocol.setStaNo(0);     // 鐩爣绔�
+
+                if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
+                    staProtocol.setPakMk(true);
+                }
+            }
+        } catch (Exception e){
+            try{
+                log.error(e.getMessage());
+            } catch (Exception e1){
+
+            }
+            log.error("鍒濆鍖栫珯鐐圭姸鎬佸紓甯�");
+        }
+    }
+
     @Override
     @SuppressWarnings("InfiniteLoopStatement")
     public void run() {
-        connect();
+        connectDev = connect();
+        while(!connectDev){
+            try {
+                connectDev = this.connect();
+                Thread.sleep(100);
+            } catch (Exception e){
+
+            }
+        }
+
+        // 鍚姩绾跨▼鑷姩閲嶈繛
+        new Thread(this::devConnect).start();
+        new Thread(this::readStatusDev).start();
+        new Thread(this::writeStatusDev).start();
+    }
+
+    private void devConnect() {
+        while (true) {
+            try {
+                Thread.sleep(1000);
+
+                if(!connectDev){
+                    try {
+                        connectDev = this.connect();
+                        Thread.sleep(100);
+                    } catch (Exception e){
+
+                    }
+                }
+            } catch (Exception e) {
+                log.info("dev杩炴帴澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+                initSite();
+//                e.printStackTrace();
+            }
+        }
+    }
+
+    private void writeStatusDev() {
         while (true) {
             try {
                 int step = 1;
@@ -179,7 +259,7 @@
                 switch (step) {
                     // 璇绘暟鎹�
                     case 1:
-                        read();
+//                        read();
                         break;
                     // 鍐欐暟鎹� ID+鐩爣绔�
                     case 2:
@@ -218,10 +298,34 @@
 //                heartbeat();
                 Thread.sleep(400);
             } catch (Exception e) {
-                e.printStackTrace();
+//                e.printStackTrace();
+                try{
+                    log.error("dev鍐欑嚎绋嬪紓甯�"+e.getMessage());
+
+                } catch (Exception e1){
+
+                }
+                log.error("DEV鏁版嵁鍐欏叆绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+
             }
 
         }
+
+    }
+
+    private void readStatusDev() {
+        while (true) {
+            try {
+                Thread.sleep(50);
+                read();
+
+            } catch (Exception e) {
+                log.error("Dev鏁版嵁璇诲彇绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+                initSite();
+            }
+
+        }
+
     }
 
     @Override
@@ -357,19 +461,19 @@
                 int bigEmpty = siemensS7Net.getByteTransform().TransInt16(resultSignOne.Content, 2);// 澶ф枡绌烘墭
                 int smallTurn = siemensS7Net.getByteTransform().TransInt16(resultSignOne.Content, 4);// 灏忔枡缈昏浆
                 int bigTurn = siemensS7Net.getByteTransform().TransInt16(resultSignOne.Content, 6);// 澶ф枡缈昏浆
-                int LineUp131 = siemensS7Net.getByteTransform().TransInt16(resultSignOne.Content, 8);// 131鎺掗槦
-                int LineUp126 = siemensS7Net.getByteTransform().TransInt16(resultSignOne.Content, 10);// 126鎺掗槦
-                int LineUp312 = siemensS7Net.getByteTransform().TransInt16(resultSignOne.Content, 12);// 312鎺掗槦
-                int LineUp310 = siemensS7Net.getByteTransform().TransInt16(resultSignOne.Content, 14);// 310鎺掗槦
+//                int LineUp131 = siemensS7Net.getByteTransform().TransInt16(resultSignOne.Content, 8);// 131鎺掗槦
+//                int LineUp126 = siemensS7Net.getByteTransform().TransInt16(resultSignOne.Content, 10);// 126鎺掗槦
+//                int LineUp312 = siemensS7Net.getByteTransform().TransInt16(resultSignOne.Content, 12);// 312鎺掗槦
+//                int LineUp310 = siemensS7Net.getByteTransform().TransInt16(resultSignOne.Content, 14);// 310鎺掗槦
 
                 updateRgvOneSign("smallEmpty",smallEmpty);
                 updateRgvOneSign("bigEmpty",bigEmpty);
                 updateRgvOneSign("smallTurn",smallTurn);
                 updateRgvOneSign("bigTurn",bigTurn);
-                updateRgvOneSign("LineUp131",LineUp131);
-                updateRgvOneSign("LineUp126",LineUp126);
-                updateRgvOneSign("LineUp312",LineUp312);
-                updateRgvOneSign("LineUp310",LineUp310);
+//                updateRgvOneSign("LineUp131",LineUp131);
+//                updateRgvOneSign("LineUp126",LineUp126);
+//                updateRgvOneSign("LineUp312",LineUp312);
+//                updateRgvOneSign("LineUp310",LineUp310);
 
             } catch (Exception e){
                 log.error("璇诲彇杈撻�佺嚎鏁伴噺鏍囪鍑虹幇寮傚父锛�"+e);
@@ -415,6 +519,18 @@
                     }
                 }
             }
+
+            try{
+                OperateResultExOne<byte[]> resultW464 = siemensS7Net.Read("DB100.1874", (short) 2);
+                weight464 = siemensS7Net.getByteTransform().TransInt16(resultW464.Content, 0);// 閲嶉噺464
+                OperateResultExOne<byte[]> resultM464 = siemensS7Net.Read("DB100.1882", (short) 16);
+                matnr464 = siemensS7Net.getByteTransform().TransString(resultM464.Content, 0,16, "UTF-8");
+                matnr464 = matnr464.replaceAll("\\s+", "");
+            } catch (Exception e){
+                log.error("璇诲彇464绔欑偣淇℃伅澶辫触");
+                weight464 = 0;
+                matnr464 = "";
+            }
         }
 
 //        //RGV灏忚溅
@@ -440,7 +556,14 @@
                 List<BasDevp> basDevps = new ArrayList<>();
                 for (Integer siteId : staNos) {
                     StaProtocol staProtocol = station.get(siteId);
-                    basDevps.add(staProtocol.toSqlModel());
+                    if (siteId == 464){
+                        BasDevp basDevp = staProtocol.toSqlModel();
+                        basDevp.setGrossWt(Double.valueOf(weight464));
+                        basDevp.setDecDesc(matnr464);
+                        basDevps.add(basDevp);
+                    } else {
+                        basDevps.add(staProtocol.toSqlModel());
+                    }
                 }
 
                 try{

--
Gitblit v1.9.1