From 1ba71b9ee89817b1931e950c966a320c75ef02c3 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 08 九月 2025 15:18:53 +0800
Subject: [PATCH] 侧面输送线出库条码对接

---
 src/main/java/com/zy/core/thread/SiemensDevpThread.java |   96 +++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 87 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 0a1d090..f7a97a0 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -197,6 +197,7 @@
         }
     }
 
+
     @Override
     public boolean connect() {
         boolean result = false;
@@ -318,7 +319,7 @@
                     if (staProtocol != null) {
                         while (iterator.hasNext()) {
                             String next = iterator.next();
-                            if (next.length() < 7 || next.length() > 10) {
+                            if (next.length() < 7 || next.length() > 10 || !next.matches("[0-9]*")) {
                                 iterator.remove();
                             }
                         }
@@ -414,11 +415,11 @@
             }
 
             // 璇绘闈㈡晠闅滃弽棣�
-            OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.922.0", (short) (16 * 4));
+            OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.2340.0", (short) (16 * 2));
             if (resultErr.IsSuccess) {
                 for (int i = 0; i < 16; i++) {
                     Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
-                    boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i * 4, 1);
+                    boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i * 2, 2);
                     StaProtocol staProtocol = station.get(siteId);
                     staProtocol.setBreakerErr(status[0]);
                     staProtocol.setInfraredErr(status[1]);
@@ -428,16 +429,20 @@
                     staProtocol.setInverterErr(status[5]);
                     staProtocol.setContactErr(status[6]);
                     staProtocol.setUpcontactErr(status[7]);
-
+                    staProtocol.setPushTheEnvelopeErr(status[8]);
+                    staProtocol.setRaiseTheLowerLimitErr(status[9]);
+                    staProtocol.setLeftProtectionTriggersErr(status[10]);
+                    staProtocol.setRightProtectionTriggersErr(status[11]);
+                    staProtocol.setGratingBlockingErr(status[12]);
                 }
             }
 
             // 璇讳晶闈㈡晠闅滃弽棣�
-            OperateResultExOne<byte[]> resultErrCM = siemensS7Net.Read("DB101.2540.0", (short) (12 * 4));
+            OperateResultExOne<byte[]> resultErrCM = siemensS7Net.Read("DB101.2540.0", (short) (12 * 2));
             if (resultErrCM.IsSuccess) {
                 for (int i = 16; i < staNoSize; i++) {
                     Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
-                    boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErrCM.Content, (i - 16) * 4, 1);
+                    boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErrCM.Content, (i - 16) * 2, 1);
                     StaProtocol staProtocol = station.get(siteId);
                     staProtocol.setBreakerErr(status[0]);
                     staProtocol.setInfraredErr(status[1]);
@@ -561,6 +566,33 @@
                     }
                 }
             }
+            // 渚ч潰鍑哄簱锛岀粰杈撻�佺嚎鍐欐潯鐮�
+            Short staNo = staProtocol.getStaNo();
+            String barcode = staProtocol.getBarcode();
+            if (staNo == 203 || staNo == 207 || staNo == 212) {
+                if (Cools.isEmpty(barcode)) {
+                    log.error("渚ч潰鍑哄簱鍒帮細{}绔欑偣锛屾潯鐮佸�间负绌猴紝浠诲姟鍙凤細{}", staNo, staProtocol.getWorkNo());
+                } else {
+
+                    String[] split = barcode.split("#");
+                    int offset = 48 + (staNo - 201) * 24;
+                    byte[] bytes = new byte[(split.length + 1) * 6];
+                    for (int j = 0, k = 0; j < split.length; j++) {
+                        String s = split[j];
+                        for (int m = 0; m < s.length(); m++) {
+                            bytes[k++] = (byte) s.charAt(m);
+                        }
+                    }
+
+                    OperateResult writeResult4 = siemensS7Net.Write("DB79" + offset, bytes);
+                    if (writeResult4.IsSuccess) {
+                        log.info("渚ч潰鍑哄簱鍒帮細{}绔欑偣锛岀粰杈撻�佺嚎鍐欐潯鐮侊細{}鎴愬姛", staNo, barcode);
+                    } else {
+                        log.error("渚ч潰鍑哄簱鍒帮細{}绔欑偣锛岀粰杈撻�佺嚎鍐欐潯鐮侊細{}澶辫触", staNo, barcode);
+                    }
+                }
+            }
+
             OperateResult writeResult1 = siemensS7Net.Write(workNoAddress, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
             OperateResult writeResult2 = siemensS7Net.Write(staNoAddress, staProtocol.getStaNo());    // 鐩爣绔�
             if (writeResult1.IsSuccess && writeResult2.IsSuccess) {
@@ -777,19 +809,19 @@
 
         if (slave.getId() == 1 && this.ioModeOf2F1 != null) {
             if (!siemensS7Net.Write("DB105.10", this.ioModeOf2F1.id).IsSuccess) {
-                OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎2F2鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
+                OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎2F1鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
                 log.error("鍐欏叆杈撻�佺嚎2F1鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
             }
         }
         if (slave.getId() == 1 && this.ioModeOf2F2 != null) {
             if (!siemensS7Net.Write("DB105.12", this.ioModeOf2F2.id).IsSuccess) {
-                OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎3F1鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
+                OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎2F2鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
                 log.error("鍐欏叆杈撻�佺嚎2F2鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
             }
         }
         if (slave.getId() == 1 && this.ioModeOf2F3 != null) {
             if (!siemensS7Net.Write("DB105.14", this.ioModeOf2F3.id).IsSuccess) {
-                OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎3F2鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
+                OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎2F3鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
                 log.error("鍐欏叆杈撻�佺嚎2F3鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
             }
         }
@@ -811,6 +843,52 @@
     public void close() {
         siemensS7Net.ConnectClose();
     }
+    public static void main(String[] args) throws Exception {
+        DevpSlave slave = new DevpSlave();
+        slave.setIp("10.49.210.41");
+//        SiemensDevpThread devpThread = new SiemensDevpThread(slave);
+//        devpThread.connect();
+        SiemensS7Net siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp());
+        siemensS7Net.setRack(slave.getRack().byteValue());
+        siemensS7Net.setSlot(slave.getSlot().byteValue());
+        OperateResult connect = siemensS7Net.ConnectServer();
+        // 渚ч潰鍑哄簱锛岀粰杈撻�佺嚎鍐欐潯鐮�
+        Short staNo = 212;
+        String barcode = "800001#123456#811112#811113";
 
 
+        String[] split = barcode.split("#");
+        int offset = 48 + (staNo - 201) * 24;
+        byte[] bytes = new byte[(split.length + 1) * 6];
+        for (int j = 0, k = 0; j < split.length; j++) {
+            String s = split[j];
+            for (int m = 0; m < s.length(); m++) {
+                bytes[k++] = (byte) s.charAt(m);
+            }
+        }
+
+        OperateResult writeResult4 = siemensS7Net.Write("DB79" + offset, bytes);
+        if (writeResult4.IsSuccess) {
+            log.info("渚ч潰鍑哄簱鍒帮細{}绔欑偣锛岀粰杈撻�佺嚎鍐欐潯鐮侊細{}鎴愬姛", staNo, barcode);
+        } else {
+            log.error("渚ч潰鍑哄簱鍒帮細{}绔欑偣锛岀粰杈撻�佺嚎鍐欐潯鐮侊細{}澶辫触", staNo, barcode);
+        }
+
+//        devpThread.write2(0);
+//        devpThread.read();
+//        // 鍐�
+//        StaProtocol staProtocol = devpThread.getStation().get(1);
+//        staProtocol.setWorkNo((short) 232);
+//        staProtocol.setStaNo((short) 6);
+//        staProtocol.setAutoing(true);
+//        staProtocol.setEmptyMk(true);
+//        staProtocol.setInEnable(true);
+//        devpThread.write(staProtocol);
+//        System.out.println("----------------------------------------");
+//        // 璇�
+//        devpThread.read();
+//        System.out.println(JSON.toJSONString(devpThread.station));
+
+    }
+
 }

--
Gitblit v1.9.1