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