From 663e6eddbcb14299881ada97e9e3c1ca0cdaa6b5 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 27 十二月 2024 15:29:02 +0800
Subject: [PATCH] #
---
zy-acs-gateway/src/main/java/com/zy/acs/gateway/mock/ParseProtocolUtils.java | 136 +++++++++++++++++++++++++++++++++++++++++++++
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java | 1
2 files changed, 137 insertions(+), 0 deletions(-)
diff --git a/zy-acs-gateway/src/main/java/com/zy/acs/gateway/mock/ParseProtocolUtils.java b/zy-acs-gateway/src/main/java/com/zy/acs/gateway/mock/ParseProtocolUtils.java
new file mode 100644
index 0000000..a701cb8
--- /dev/null
+++ b/zy-acs-gateway/src/main/java/com/zy/acs/gateway/mock/ParseProtocolUtils.java
@@ -0,0 +1,136 @@
+package com.zy.acs.gateway.mock;
+
+import com.alibaba.fastjson.JSON;
+import com.zy.acs.common.domain.protocol.AGV_12_UP;
+import com.zy.acs.common.domain.protocol.IMessageBody;
+import com.zy.acs.common.utils.Utils;
+import com.zy.acs.framework.common.RadixTools;
+import com.zy.acs.gateway.constant.ProtocolType;
+import com.zy.acs.gateway.domain.AgvPackage;
+import com.zy.acs.gateway.handler.MessageBodyHandler;
+import com.zy.acs.gateway.handler.coder.ProtocolDecoder;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufAllocator;
+import io.netty.channel.ChannelHandlerContext;
+
+public class ParseProtocolUtils {
+
+ public static void main(String[] args) {
+ String protocolMsg = "AA30000F0000003DF06C67124B000000DCFFDDFF358EB043000029BAC0358EB043000000000000000000000000A6FF40020C031909";
+
+ byte[] bytes = RadixTools.hexStringToBytes(protocolMsg);
+
+ ByteBuf buffer = ByteBufAllocator.DEFAULT.buffer(256);
+
+ buffer.writeBytes(bytes);
+
+
+ ProtocolDecoder protocolDecoder = new ProtocolDecoder(1024);
+
+ AgvPackage pac = AgvPackage.valueOfEmpty();
+ pac.setSourceBuff(buffer);
+
+ protocolDecoder.analyzeProtocol(pac);
+
+
+ Boolean b = msgChannelRead(pac);
+
+
+ System.out.println(JSON.toJSONString(pac));
+
+ IMessageBody messageBody = pac.getBody().getMessageBody();
+ if (messageBody instanceof AGV_12_UP) {
+ AGV_12_UP agv_12_up = (AGV_12_UP) messageBody;
+ System.out.println(agv_12_up.getQrCode());
+ }
+ }
+
+
+ private static Boolean msgChannelRead(AgvPackage pac) {
+ String namespace = IMessageBody.class.getPackage().getName();
+
+ ProtocolType protocolType = pac.getHeader().getProtocolType();
+
+
+ if (null == protocolType) {
+
+ // 鏈煡鍖�
+ return Boolean.FALSE;
+ }
+
+ String className = namespace + ".AGV_" + Utils.zeroFill(Integer.toHexString(protocolType.getCode()).toUpperCase(), 2)
+ +"_"
+
+ + pac.getHeader().getProtocolType().getDirection().toString().toUpperCase();
+
+ Class<?> cls = null;
+ try {
+
+
+ cls = Class.forName(className);;
+
+ } catch (ClassNotFoundException e) {
+
+
+ return Boolean.FALSE;
+ }
+
+ Object obj = null;
+
+ if (null != cls) {
+
+
+ try {
+ obj = cls.newInstance();
+
+ } catch (ReflectiveOperationException reflectiveOperationException) {
+
+ // 銆傘�傘��
+ return Boolean.FALSE;
+ }
+
+
+ }
+
+ ByteBuf contentBuf = pac.getBody().getContent(); contentBuf.markReaderIndex(); // sign
+ // body.buf 灞炰簬鍒囩墖鑾峰彇锛� slice 涓� channel涓殑缂撳啿鍖� 涓哄悓涓� refenec
+
+
+
+ contentBuf.resetReaderIndex();
+
+ int len= contentBuf.readableBytes();
+
+ byte[] bytes = new byte[len];
+
+
+
+ pac.getBody().getContent().readBytes(bytes);
+
+
+
+ // 璇诲彇瀛楄妭鏁扮粍 ===>> 瀹為檯鎶ユ枃绫诲瀷
+ IMessageBody iMessageBody = null;
+
+ if (null != obj) {
+
+ if ( obj instanceof IMessageBody) {
+
+ iMessageBody = (IMessageBody) obj;
+
+
+ iMessageBody.readFromBytes(bytes);
+ }
+
+ }
+
+
+
+ pac.getBody().setMessageBody(iMessageBody); contentBuf.resetReaderIndex();
+
+ return true;
+ }
+
+}
+
+// AA 30000F0000001DEE6C67120B0000001200EDFF8340B5420100E76FC28340B542000000000000000000000000A6FF40020C030674
\ No newline at end of file
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java
index 1999867..12eb100 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java
@@ -70,6 +70,7 @@
String laneDataStr = redis.getValue(RedisConstant.MAP_LANE_DATA, String.valueOf(lev));
if (!Cools.isEmpty(laneDataStr)) {
this.lanes = GsonUtils.fromJsonToList(laneDataStr, Lane.class);
+ this.initialized = Boolean.TRUE;
} else {
StopWatch stopWatch = new StopWatch();
--
Gitblit v1.9.1