From d39480501976a24d3749048e728e80cb1d01145b Mon Sep 17 00:00:00 2001 From: whycq <913841844@qq.com> Date: 星期二, 14 二月 2023 19:38:02 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/nbjfwcs' into nbjfwcs --- src/main/java/com/zy/core/thread/BarcodeThread.java | 127 ++++++++++++++++++++++++++----- src/main/java/com/zy/core/model/DevpSlave.java | 4 + src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 17 ++++ src/main/java/com/zy/core/thread/SiemensDevpThread.java | 24 +++--- src/main/resources/application.yml | 13 +++ src/main/java/com/zy/core/ServerBootstrap.java | 2 6 files changed, 154 insertions(+), 33 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 14ca97b..23d6d98 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -101,10 +101,27 @@ for (DevpSlave.Sta inSta : devp.getInSta()) { // 鑾峰彇鏉$爜鎵弿浠俊鎭� BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); + if (barcodeThread == null) { continue; } String barcode = barcodeThread.getBarcode(); + + //101绔欐湁3涓壂鐮佸櫒锛屽綋0鎵爜鍣ㄦ病鏈夋暟鎹椂锛岃幏鍙�9銆�10涓や釜鎵爜鍣ㄦ暟鎹� + if(inSta.getStaNo().equals(101) && !Cools.isEmpty(barcode)){ + BarcodeThread barcodeThread1 = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode1()); + if (barcodeThread1 != null) { + barcode = barcodeThread1.getBarcode(); + } + + if(!Cools.isEmpty(barcode)) { + BarcodeThread barcodeThread2 = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode2()); + if (barcodeThread2 != null) { + barcode = barcodeThread2.getBarcode(); + } + } + } + if (!Cools.isEmpty(barcode)) { log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) { diff --git a/src/main/java/com/zy/core/ServerBootstrap.java b/src/main/java/com/zy/core/ServerBootstrap.java index cad143d..a1bb5dd 100644 --- a/src/main/java/com/zy/core/ServerBootstrap.java +++ b/src/main/java/com/zy/core/ServerBootstrap.java @@ -92,7 +92,7 @@ log.info("鍒濆鍖栨潯鐮佹壂鎻忎华绾跨▼..................................................."); for (Slave barcode : slaveProperties.getBarcode()) { BarcodeThread barcodeThread = new BarcodeThread(barcode); -// new Thread(barcodeThread).start(); + new Thread(barcodeThread).start(); SlaveConnection.put(SlaveType.Barcode, barcode.getId(), barcodeThread); } // 鍒濆鍖朙ED绾跨▼ diff --git a/src/main/java/com/zy/core/model/DevpSlave.java b/src/main/java/com/zy/core/model/DevpSlave.java index ad33be5..df80422 100644 --- a/src/main/java/com/zy/core/model/DevpSlave.java +++ b/src/main/java/com/zy/core/model/DevpSlave.java @@ -34,6 +34,10 @@ private Integer barcode; + private Integer barcode1; + + private Integer barcode2; + } } diff --git a/src/main/java/com/zy/core/thread/BarcodeThread.java b/src/main/java/com/zy/core/thread/BarcodeThread.java index 00ffb2a..18202bd 100644 --- a/src/main/java/com/zy/core/thread/BarcodeThread.java +++ b/src/main/java/com/zy/core/thread/BarcodeThread.java @@ -9,6 +9,13 @@ import lombok.Data; import lombok.extern.slf4j.Slf4j; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.net.SocketAddress; +import java.net.SocketTimeoutException; import java.util.Date; /** @@ -20,44 +27,124 @@ public class BarcodeThread implements Runnable, ThreadHandler { private Slave slave; - private StringBuffer barcode = new StringBuffer(); + private String barcode; + private Socket socket; + private DataOutputStream dataOutputStream; + private DataInputStream dataInputStream; public BarcodeThread(Slave slave) { this.slave = slave; } - public String getBarcode() { - return barcode.toString(); - } - - public void setBarcode(String barcode) { - this.barcode.delete(0, this.barcode.length()); - this.barcode.append(barcode); - if(!Cools.isEmpty(barcode)) { - log.info("{}鍙锋潯鐮佸櫒锛屾绱㈡暟鎹細{}", slave.getId(), this.barcode); - JSONObject jsonObject = new JSONObject(); - jsonObject.put("time", DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmss_F)); - jsonObject.put("barcode", barcode); - if (OutputQueue.BARCODE.size() >= 32) { - OutputQueue.BARCODE.poll(); + @Override + @SuppressWarnings("InfiniteLoopStatement") + public void run() { + connect(); + while (true) { + try { + byte[] read = read(8, 200); + if (null != read) { + String s = new String(read); + if (!Cools.isEmpty(s)) { + barcode = new String(read); + log.info("{}鍙锋潯鐮佸櫒锛屾绱㈡暟鎹細{}", slave.getId(), this.barcode); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("time", DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmss_F)); + jsonObject.put("barcode", barcode); + if (OutputQueue.BARCODE.size() >= 32) { + OutputQueue.BARCODE.poll(); + } + OutputQueue.BARCODE.offer(jsonObject); + } + } + Thread.sleep(50); + } catch (SocketTimeoutException ignore) { + } catch (Exception e) { +// e.printStackTrace(); } - OutputQueue.BARCODE.offer(jsonObject); } } @Override public boolean connect() { - return false; + try { + close(); //1.涓诲姩閲婃斁杩炴帴 //2.鏌愪簺鏈嶅姟鍣ㄥ鎸囧畾ip鏈夐摼璺暟闄愬埗 + socket = new Socket(); + //socket.setKeepAlive(true); + SocketAddress socketAddress = new InetSocketAddress(slave.getIp(), slave.getPort()); + socket.connect(socketAddress, 1000); //鏌愪簺鏈嶅姟鍣╬ing寤惰繜楂樻椂瑕佸鍔�,鍚﹀垯浼氭姤閿檆onnect timeout + dataOutputStream = new DataOutputStream(socket.getOutputStream()); + dataInputStream = new DataInputStream(socket.getInputStream()); +// log.info("鏉$爜鎵弿浠繛鎺ユ垚鍔� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + } catch (Exception e) { + socket = null; + log.error("鏉$爜鎵弿浠繛鎺ュけ璐ワ紒锛侊紒 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + return false; + } + return true; } @Override public void close() { - + try { + if (null != dataOutputStream) { + dataOutputStream.close(); + } + if (null != dataInputStream) { + dataInputStream.close(); + } +// if (null != socket && !socket.isClosed()) { +// socket.close(); +// } + if (null != socket){ + socket.close(); + } + socket = null; + } catch (IOException e) { + log.error("SocketClient close Exception:" + e.getMessage()); + } } - @Override - public void run() { + public void write(byte[] msg, int len) throws IOException { + if (null != dataInputStream) + { + dataOutputStream.write(msg, 0, len); + dataOutputStream.flush(); + } + } + public byte[] read(int bufferSize, int timeOut) throws IOException { + if (socket == null || !socket.isConnected() || socket.isClosed()) { + connect(); + } +// connect(); + socket.setSoTimeout(timeOut); + byte[] bytes = new byte[bufferSize]; + int len = dataInputStream.read(bytes); + byte[] tempBytes = null; + if (len > 0) { + tempBytes = new byte[len]; + System.arraycopy(bytes, 0, tempBytes, 0, len); + } else { + connect(); + } + return tempBytes; + } + + public boolean valid() throws Exception { + if (null == socket || socket.isClosed() || socket.isInputShutdown() || socket.isOutputShutdown()) { + if (dataInputStream != null) { + dataInputStream.close(); + } + if (dataOutputStream != null) { + dataOutputStream.close(); + } + if (socket != null) { + socket.close(); + } + return false; + } + return true; } } diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index f4417ad..6ba2110 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -204,18 +204,18 @@ } //鏉$爜鎵弿鍣� - Thread.sleep(200); - OperateResultExOne<byte[]> result2 = null; - result2 = siemensS7Net.Read("DB100.200",(short)(barcodeSize*16)); - if (result2.IsSuccess) { - for (int i = 0; i < barcodeSize; i++) { - String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*16,8, "UTF-8"); - BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, slave.getId() == 1 ? i + 1 : i + 3); - if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { - barcodeThread.setBarcode(barcode); - } - } - } + //Thread.sleep(200); + //OperateResultExOne<byte[]> result2 = null; + //result2 = siemensS7Net.Read("DB100.200",(short)(barcodeSize*16)); + //if (result2.IsSuccess) { + // for (int i = 0; i < barcodeSize; i++) { + // String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*16,8, "UTF-8"); + // BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, slave.getId() == 1 ? i + 1 : i + 3); + // if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { + // barcodeThread.setBarcode(barcode); + // } + // } + //} // //RGV灏忚溅 // Thread.sleep(200); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 30009b9..85cf8a0 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -188,6 +188,8 @@ inSta[0]: staNo: 101 barcode: ${wcs-slave.barcode[0].id} + barcode1: ${wcs-slave.barcode[8].id} + barcode2: ${wcs-slave.barcode[9].id} # 鍏ュ簱鍙�2 inSta[1]: staNo: 111 @@ -345,6 +347,17 @@ id: 8 ip: 10.10.10.59 port: 51236 + # 鏉$爜鎵弿浠�9 + barcode[8]: + id: 8 + ip: 10.10.10.59 + port: 51236 + # 鏉$爜鎵弿浠�10 + barcode[9]: + id: 8 + ip: 10.10.10.59 + port: 51236 + # LED1 led[0]: id: 1 -- Gitblit v1.9.1