From 9efa9a5bc1c36a7061a909ff9d315b9e616876ef Mon Sep 17 00:00:00 2001
From: 18516761980 <56479841@qq.com>
Date: 星期六, 30 七月 2022 12:42:19 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/netty/handle/ProtocolDecoder.java      |   20 +--
 src/main/java/com/zy/core/properties/SlaveProperties.java        |    2 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java      |    2 
 src/main/java/com/zy/core/thread/SocketThread.java               |  200 ++++++++++++++++++++++++++--------------
 src/main/java/com/zy/core/MainProcess.java                       |    6 
 src/main/java/com/zy/core/netty/handle/PackageServerHandler.java |    8 -
 src/main/java/com/zy/core/ServerBootstrap.java                   |   33 ++++-
 7 files changed, 171 insertions(+), 100 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 31ada9d..02717b6 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1500,7 +1500,7 @@
                 }
             }
             // 鑾峰彇led绾跨▼
-            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId());
+            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
             // led鏄剧ず榛樿鍐呭
             if (reset && !ledThread.isLedMk()) {
                 ledThread.setLedMk(true);
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index a7a89ca..265eef0 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -5,11 +5,9 @@
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PreDestroy;
-import java.util.ArrayList;
 
 /**
  * WCS涓绘祦绋�
@@ -63,9 +61,9 @@
                     // 鍏ュ簱  ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
                     mainService.storeEmptyPlt();
                     // 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
-                    mainService.ledExecute();
+//                    mainService.ledExecute();
                     // 鍏朵粬  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
-                    mainService.ledReset();
+//                    mainService.ledReset();
 
                     mainService.outOfDevp();
 
diff --git a/src/main/java/com/zy/core/ServerBootstrap.java b/src/main/java/com/zy/core/ServerBootstrap.java
index ef958a5..76c63e0 100644
--- a/src/main/java/com/zy/core/ServerBootstrap.java
+++ b/src/main/java/com/zy/core/ServerBootstrap.java
@@ -5,9 +5,12 @@
 import com.zy.core.enums.SlaveType;
 import com.zy.core.model.CrnSlave;
 import com.zy.core.model.DevpSlave;
-import com.zy.core.model.LedSlave;
+import com.zy.core.model.SocketSlave;
 import com.zy.core.properties.SlaveProperties;
-import com.zy.core.thread.*;
+import com.zy.core.thread.BarcodeThread;
+import com.zy.core.thread.SiemensCrnThread;
+import com.zy.core.thread.SiemensDevpThread;
+import com.zy.core.thread.SocketThread;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
@@ -71,6 +74,10 @@
         for (Slave car : slaveProperties.getCar()) {
             MessageQueue.init(SlaveType.Car, car);
         }
+        // 鍒濆鍖杝ocket mq
+        for (Slave socket : slaveProperties.getSocket()) {
+            MessageQueue.init(SlaveType.Socket, socket);
+        }
     }
 
     private void initThread(){
@@ -92,16 +99,24 @@
         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绾跨▼
-        log.info("鍒濆鍖朙ED绾跨▼...................................................");
-        for (LedSlave led : slaveProperties.getLed()) {
-            LedThread ledThread = new LedThread(led);
-            new Thread(ledThread).start();
-            SlaveConnection.put(SlaveType.Led, led.getId(), ledThread);
+
+        // 鍒濆鍖栨潯鐮佹壂鎻忎华绾跨▼
+        log.info("鍒濆鍖朣ocket绾跨▼...................................................");
+        for (SocketSlave socket : slaveProperties.getSocket()) {
+            SocketThread socketThread = new SocketThread(socket);
+            new Thread(socketThread).start();
+            SlaveConnection.put(SlaveType.Socket, socket.getId(), socketThread);
         }
+//        // 鍒濆鍖朙ED绾跨▼
+//        log.info("鍒濆鍖朙ED绾跨▼...................................................");
+//        for (LedSlave led : slaveProperties.getLed()) {
+//            LedThread ledThread = new LedThread(led);
+//            new Thread(ledThread).start();
+//            SlaveConnection.put(SlaveType.Led, led.getId(), ledThread);
+//        }
         // 鍒濆鍖栫绉ょ嚎绋�
 //        log.info("鍒濆鍖栫绉ょ嚎绋�...................................................");
 //        for (Slave scale : slaveProperties.getScale()) {
diff --git a/src/main/java/com/zy/core/netty/handle/PackageServerHandler.java b/src/main/java/com/zy/core/netty/handle/PackageServerHandler.java
index fc7f7a5..9c9f4fa 100644
--- a/src/main/java/com/zy/core/netty/handle/PackageServerHandler.java
+++ b/src/main/java/com/zy/core/netty/handle/PackageServerHandler.java
@@ -1,15 +1,10 @@
 package com.zy.core.netty.handle;
 
-import com.core.common.Cools;
-import com.zy.core.Slave;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.SlaveType;
 import com.zy.core.netty.AbstractInboundHandler;
 import com.zy.core.netty.cache.ChannelCache;
 import com.zy.core.netty.domain.ChPackage;
 import com.zy.core.netty.properties.TcpProperties;
 import com.zy.core.properties.SlaveProperties;
-import com.zy.core.thread.BarcodeThread;
 import io.netty.channel.Channel;
 import io.netty.channel.ChannelHandler;
 import io.netty.channel.ChannelHandlerContext;
@@ -33,6 +28,9 @@
 
     @Override
     protected boolean channelRead0(ChannelHandlerContext ctx, ChPackage pac) {
+        byte[] bytes = pac.getBytes();
+        System.out.println("瀹㈡埛绔柇寮�===>>" + new String(bytes, 0, bytes.length));
+
 //        log.info("璇荤爜鍣ㄣ�怚P:{}銆� 涓婅鏁版嵁 ===>> {}", pac.getIp(), pac.getAscii());
 //        //鎵爜涓婁紶鏁版嵁鏍煎紡蹇呴』2涓�#寮�澶达紝濡�:##12345678
 //        String msg = pac.getAscii().replaceAll("#", "");
diff --git a/src/main/java/com/zy/core/netty/handle/ProtocolDecoder.java b/src/main/java/com/zy/core/netty/handle/ProtocolDecoder.java
index 7cb12d7..c265083 100644
--- a/src/main/java/com/zy/core/netty/handle/ProtocolDecoder.java
+++ b/src/main/java/com/zy/core/netty/handle/ProtocolDecoder.java
@@ -23,18 +23,12 @@
         this.snowflakeIdWorker = snowflakeIdWorker;
     }
 
-
     @Override
     protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> list) throws Exception {
-        int startMark = indexOfStartMark(in);
-        if (startMark == -1){
-            return;
-        }
-        // 鍘婚櫎鏃犵敤鍓嶇紑鎶ユ枃
-        if (startMark != 0){
-            in.readerIndex(startMark);
-            in.discardReadBytes();
-        }
+
+        byte[] bytes = new byte[in.readableBytes()];
+        in.readBytes(bytes);
+
         // 鐢熸垚鍜屽垵濮嬪寲娑堟伅鍖呰绫�
 
         String ip = ((InetSocketAddress) ctx.channel().remoteAddress()).getAddress().getHostAddress();
@@ -42,8 +36,12 @@
 
         pac.setSourceBuff(in);
 
+        pac.setBytes(bytes);
+
+        list.add(pac);
+
         // 瑙f瀽
-        list.add(analyzeProtocol(pac));
+//        list.add(analyzeProtocol(pac));
     }
 
     public ChPackage analyzeProtocol(ChPackage pac){
diff --git a/src/main/java/com/zy/core/properties/SlaveProperties.java b/src/main/java/com/zy/core/properties/SlaveProperties.java
index b2e19a4..3bbce7f 100644
--- a/src/main/java/com/zy/core/properties/SlaveProperties.java
+++ b/src/main/java/com/zy/core/properties/SlaveProperties.java
@@ -4,6 +4,7 @@
 import com.zy.core.model.CrnSlave;
 import com.zy.core.model.DevpSlave;
 import com.zy.core.model.LedSlave;
+import com.zy.core.model.SocketSlave;
 import lombok.Data;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Configuration;
@@ -42,4 +43,5 @@
 
     private List<Slave> car = new ArrayList<>();
 
+    private List<SocketSlave> socket = new ArrayList<>();
 }
diff --git a/src/main/java/com/zy/core/thread/SocketThread.java b/src/main/java/com/zy/core/thread/SocketThread.java
index c6d1339..848512b 100644
--- a/src/main/java/com/zy/core/thread/SocketThread.java
+++ b/src/main/java/com/zy/core/thread/SocketThread.java
@@ -1,43 +1,31 @@
 package com.zy.core.thread;
 
-import HslCommunication.Core.Types.OperateResult;
-import HslCommunication.Core.Types.OperateResultExOne;
-import HslCommunication.Profinet.Siemens.SiemensPLCS;
-import HslCommunication.Profinet.Siemens.SiemensS7Net;
-import com.alibaba.fastjson.JSON;
-import com.core.common.DateUtils;
-import com.core.common.SpringUtils;
-import com.core.exception.CoolException;
 import com.zy.core.ThreadHandler;
-import com.zy.core.cache.MessageQueue;
-import com.zy.core.cache.OutputQueue;
-import com.zy.core.enums.SlaveType;
 import com.zy.core.model.SocketSlave;
-import com.zy.core.model.Task;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 
-import java.text.MessageFormat;
-import java.util.Date;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.InetAddress;
+import java.net.ServerSocket;
+import java.net.Socket;
 
 /**
- * shuttle 绌挎杞︾嚎绋�
- * Created by vincent on 2020/8/4
- * 涓嶈兘鏈� 妲藉彿 鍜� 鏈烘灦鍙�
+ * 娑堥槻socket绾跨▼
+ * Created on 2022/7/30
  */
 @Data
 @Slf4j
 public class SocketThread implements Runnable, ThreadHandler {
 
-    private SiemensS7Net siemensS7Net;
     private SocketSlave slave;
-    private SteProtocol steProtocol;
-    private short heartBeatVal = 1;
-    private boolean resetFlag = false;
+//    private String barcode;
+//    private Socket socket;
+//    private DataOutputStream dataOutputStream;
+//    private DataInputStream dataInputStream;
 
-    private Integer lastRow;
-    private Integer lastBay;
-    private Integer lastLev;
+    private byte[] byteData = new byte[1024];
 
     public SocketThread(SocketSlave slave) {
         this.slave = slave;
@@ -46,75 +34,147 @@
     @Override
     @SuppressWarnings("InfiniteLoopStatement")
     public void run() {
-        this.connect();
+//        this.connect();
         while (true) {
             try {
-                int step = 1;
-                Task task = MessageQueue.poll(SlaveType.Socket, slave.getId());
-                if (task != null) {
-                    step = task.getStep();
-                }
-                switch (step) {
-                    // 璇绘暟鎹�
-                    case 1:
-//                        readStatus();
-                        break;
-                    // 鍐欏叆鏁版嵁
-                    case 2:
-//                        write((StaProtocol)task.getData());
-                        break;
-                    default:
-                        break;
-                }
-                // 蹇冭烦
-//                heartbeat();
-                Thread.sleep(500);
+//                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();
+//                e.printStackTrace();
             }
-
         }
     }
 
+    public byte[] getByteData() {
+        return byteData;
+    }
+
+    public void setByteData(byte[] byteData) {
+        this.byteData = byteData;
+    }
 
     @Override
     public boolean connect() {
-        boolean result = false;
-
-        return result;
-    }
-
-    /**
-     * 璇诲彇鐘舵��
-     */
-    private void readStatus(){
-
-    }
-
-    /**
-     * 鍐欏叆鏁版嵁
-     */
-    private boolean write(){
-
+        return false;
     }
 
     @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());
+//        }
     }
 
-    /**
-     * 蹇冭烦
-     */
-    private void heartbeat(){
+//    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;
+//    }
 
     /******************************************************************************************/
     /**************************************** 娴嬭瘯涓撶敤 *****************************************/
     /*****************************************************************************************/
     public static void main(String[] args) throws InterruptedException {
+        try{
+            ServerSocket socket = new ServerSocket(8802);
+            System.out.println("濂楁帴瀛楀垱寤烘垚鍔燂紝绛夊緟杩炴帴...");
 
+            while (true){
+                final Socket con = socket.accept();
+                InetAddress addr = con.getInetAddress();
+                System.out.println("瀹㈡埛绔帴鍏�===>>" + addr.getHostAddress() + ":" + con.getPort());
+
+                new Thread((new Runnable() {
+                    @Override
+                    public void run() {
+                        InputStream in;
+
+                        while (true){
+                            try{
+                                in = con.getInputStream();
+                                int len = 0;
+                                byte[] data = new byte[128];
+                                len = in.read(data);
+                                if(len>0) {
+                                    System.out.println("璇诲埌娑堟伅===>>" + new String(data, 0, len));
+                                } else {
+//                                    System.out.println("瀹㈡埛绔柇寮�===>>");
+                                }
+                            }catch (IOException e){
+                                e.printStackTrace();
+                            }
+                        }
+                    }
+                })).start();
+            }
+        }catch (IOException e){
+            e.printStackTrace();
+        }
     }
 
 }

--
Gitblit v1.9.1