From add29c9dfe37a3147ee1a426e1dba2f42ad741e6 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期四, 05 六月 2025 18:11:46 +0800
Subject: [PATCH] 1

---
 src/main/java/com/zy/core/thread/SiemensDevpThread.java |  169 +++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 125 insertions(+), 44 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 70471e5..bfd8aa9 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -25,11 +25,9 @@
 import lombok.extern.slf4j.Slf4j;
 
 import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
 
 /**
  * 杈撻�佺嚎绾跨▼
@@ -40,18 +38,61 @@
 public class SiemensDevpThread implements Runnable, DevpThread {
 
     public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
-        add(101);add(102);add(103);add(104);add(105);add(106);add(107);add(108);add(109);add(110);
-        add(111);add(112);add(113);add(114);add(115);add(116); // 渚ч潰浠� index 16寮�濮� 闀垮害12
-        add(201);add(202);add(203);add(204);add(205);add(206);add(207);add(208);add(209);add(210);add(211);add(212);
+        add(101);
+        add(102);
+        add(103);
+        add(104);
+        add(105);
+        add(106);
+        add(107);
+        add(108);
+        add(109);
+        add(110);
+        add(111);
+        add(112);
+        add(113);
+        add(114);
+        add(115);
+        add(116); // 渚ч潰浠� index 16寮�濮� 闀垮害12
+        add(201);
+        add(202);
+        add(203);
+        add(204);
+        add(205);
+        add(206);
+        add(207);
+        add(208);
+        add(209);
+        add(210);
+        add(211);
+        add(212);
     }};
 
     public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
-        add(301);add(302);add(303);add(304);add(305);add(306);add(307);add(308);
+        add(301);
+        add(302);
+        add(303);
+        add(304);
+        add(305);
+        add(306);
+        add(307);
+        add(308);
+    }};
+
+    // 姝i潰5涓潯鐮佹壂鎻忕珯
+    public static final ArrayList<Integer> barcodeSite2 = new ArrayList<Integer>() {{
+        add(102);
+        add(105);
+        add(108);
+        add(111);
+        add(114);
     }};
 
     // 渚ч潰涓変釜鏉$爜鎵弿绔�
     public static final ArrayList<Integer> barcodeSite = new ArrayList<Integer>() {{
-        add(202);add(206);add(211);
+        add(202);
+        add(206);
+        add(211);
     }};
 
     /**
@@ -249,37 +290,67 @@
             }
 
             // 璇诲彇姝i潰鏉$爜
-            OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.1404", (short) (16 * 8));
+            OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB103.0", (short) (5 * 40));
             if (result2.IsSuccess) {
-                for (int i = 0; i < 16; i++) {
-                    int barcodeId = 0;
-                    switch (i) {
-                        case 1:
-                            barcodeId = 1;
-                            break;
-                        case 4:
-                            barcodeId = 2;
-                            break;
-                        case 7:
-                            barcodeId = 3;
-                            break;
-                        case 10:
-                            barcodeId = 4;
-                            break;
-                        case 13:
-                            barcodeId = 5;
-                            break;
-                        default:
+                for (int i = 0; i < 5; i++) {
+                    String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 40, 40, "UTF-8");
+                    if (!Cools.isEmpty()) {
+                        barcode = barcode.trim();
                     }
-                    if (barcodeId != 0) {
-                        String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 6, "UTF-8");
-                        BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId);
-                        if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
-                            barcodeThread.setBarcode(barcode);
+                    List<String> barcodeList = Arrays.stream(barcode.split(",")).collect(Collectors.toList());
+                    Iterator<String> iterator = barcodeList.iterator();
+                    while (iterator.hasNext()) {
+                        String next = iterator.next();
+                        if (next.length() == 6) {
+                            barcode = next;
+                            iterator.remove();
+                            break;
                         }
+                    }
+
+                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i);
+                    if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+                        barcodeThread.setBarcode(barcode);
+                    }
+                    StaProtocol staProtocol = station.get(barcodeSite2.get(i));
+                    if (staProtocol != null) {
+                        staProtocol.setMatIdList(barcodeList);
                     }
                 }
             }
+
+            // 璇诲彇姝i潰鏉$爜
+//            OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.1404", (short) (16 * 8));
+//            if (result2.IsSuccess) {
+//                for (int i = 0; i < 16; i++) {
+//                    int barcodeId = 0;
+//                    switch (i) {
+//                        case 1:
+//                            barcodeId = 1;
+//                            break;
+//                        case 4:
+//                            barcodeId = 2;
+//                            break;
+//                        case 7:
+//                            barcodeId = 3;
+//                            break;
+//                        case 10:
+//                            barcodeId = 4;
+//                            break;
+//                        case 13:
+//                            barcodeId = 5;
+//                            break;
+//                        default:
+//                    }
+//                    if (barcodeId != 0) {
+//                        String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 6, "UTF-8");
+//                        BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId);
+//                        if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+//                            barcodeThread.setBarcode(barcode);
+//                        }
+//                    }
+//                }
+//            }
 
             // 璇诲彇渚ч潰鏉$爜
             OperateResultExOne<byte[]> resultCM2 = siemensS7Net.Read("DB101.2574", (short) (3 * 4 * 6));
@@ -448,12 +519,15 @@
         String workNoAddress;
         // 鐩爣绔欏湴鍧�
         String staNoAddress;
+        // 楂樺害绫诲瀷鍦板潃
+        String heightAddress = null;
         if (index < 16) {
             workNoAddress = "DB100." + index * 4;
             staNoAddress = "DB100." + (index * 4 + 2);
+            heightAddress = "DB104." + (index * 4);
         } else {
-            workNoAddress = "DB100." + (400 + (index-16) * 4);
-            staNoAddress = "DB100." + (400 + (index-16) * 4 + 2);
+            workNoAddress = "DB100." + (400 + (index - 16) * 4);
+            staNoAddress = "DB100." + (400 + (index - 16) * 4 + 2);
         }
 
         OperateResult writeResult;
@@ -463,7 +537,14 @@
         boolean writeFlag = false;
         while (writeCount < 5) {
             OperateResult writeResult1 = siemensS7Net.Write(workNoAddress, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
-            OperateResult writeResult2 = siemensS7Net.Write(staNoAddress, staProtocol.getStaNo());    // 鐩爣绔�
+            OperateResult writeResult2 = siemensS7Net.Write(staNoAddress, staProtocol.getStaNo());// 鐩爣绔�
+            if (!Cools.isEmpty(staProtocol.getHeight()) && heightAddress != null) {
+                OperateResult writeResult3 = siemensS7Net.Write(heightAddress, Short.valueOf(staProtocol.getHeight()));    // 楂樺害绫诲瀷
+                if (!writeResult3.IsSuccess) {
+                    log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触锛屽皾璇曢噸鏂板啓鍏ワ紝杈撳叆鍙傛暟={}锛岃緭鍑哄弬鏁�={}", JSON.toJSON(staProtocol), writeResult3);// 鍐欏叆杈撻�佺嚎鍛戒护澶辫触锛屽皾璇曢噸鏂板啓鍏ワ紝杈撳叆鍙傛暟={}锛岃緭鍑哄弬鏁�={}", JSON.toJSON(staProtocol), writeResult3);
+                    writeResult3 = siemensS7Net.Write(heightAddress, staProtocol.getHeight());    // 楂樺害绫诲瀷
+                }
+            }
             if (writeResult1.IsSuccess && writeResult2.IsSuccess) {
                 Thread.sleep(200);
                 OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index * 4, (short) 2);
@@ -472,9 +553,9 @@
 //                    short staNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 2);
 //                    if (staProtocol.getWorkNo().equals(workNo) && staProtocol.getStaNo().equals(staNo)) {
 //                        //浠诲姟鍛戒护鍐欏叆鎴愬姛
-                        writeFlag = true;
-                        log.info("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝骞朵笖鍥炶鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
-                        break;
+                    writeFlag = true;
+                    log.info("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝骞朵笖鍥炶鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+                    break;
 //                    } else {//杩斿洖缁撴灉鏄垚鍔熶簡锛屼絾鏄湡瀹炲�间笉鐩稿悓
 //                        writeCount++;
 //                        OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝浣嗘槸璇诲彇浠诲姟鍊间笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
@@ -535,9 +616,10 @@
 //        array[1] = staProtocol.getStaNo();
 //        OperateResult write = siemensS7Net.Write("DB100." + index*4, array);
 //
-////        OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
-////        Thread.sleep(500);
-////        OperateResult write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo());    // 鐩爣绔�
+
+    /// /        OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
+    /// /        Thread.sleep(500);
+    /// /        OperateResult write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo());    // 鐩爣绔�
 //
 //        if (!write.IsSuccess) {
 //            staProtocol = station.get(staProtocol.getSiteId());
@@ -557,7 +639,6 @@
 //            }
 //        }
 //    }
-
     private void write2(StaProtocol staProtocol) throws InterruptedException {
         if (null == staProtocol) {
             return;

--
Gitblit v1.9.1