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