Bladeren bron

重连时间可调

xiuwei 3 jaren geleden
bovenliggende
commit
f84914e261

+ 6 - 1
protocol-core/src/main/java/wei/yigulu/utils/FutureListenerReconnectThreadPool.java

@@ -16,6 +16,11 @@ public class FutureListenerReconnectThreadPool {
 	ScheduledExecutorService pool = Executors.newScheduledThreadPool(10);
 	private Map<BaseProtocolBuilder, ScheduledFuture> scheduledFutureMap = new ConcurrentHashMap<>();
 
+	/**
+	 * 重新连接延迟
+	 */
+	public static int  RECONNECT_DELAY=30;
+
 	private FutureListenerReconnectThreadPool() {
 	}
 
@@ -24,7 +29,7 @@ public class FutureListenerReconnectThreadPool {
 	}
 
 	public ScheduledFuture submitReconnectJob(BaseProtocolBuilder protocolBuilder, Runnable command) {
-		return submitReconnectJob(protocolBuilder, command, 30);
+		return submitReconnectJob(protocolBuilder, command, RECONNECT_DELAY);
 	}
 
 	public ScheduledFuture submitReconnectJob(BaseProtocolBuilder protocolBuilder, Runnable command, int delaySecond) {

+ 4 - 6
protocol-iec104/src/main/java/wei/yigulu/iec104/apdumodel/Apdu.java

@@ -246,14 +246,12 @@ public class Apdu {
 		byte[][] bb = new byte[0][];
 		if (this.apciType == ApciType.I_FORMAT) {
 			try {
+				if(this.asdu.getDataFrame()==null){
+					throw new Iec104Exception("I帧数据体为空");
+				}
 				bb = this.asdu.getDataFrame().handleAndAnswer(this);
 			} catch (Exception e) {
-				if (e instanceof NullPointerException) {
-					log.error("数据帧解析后的逻辑处理出现异常", e);
-					//throw new Iec104Exception("该I帧无数据体");
-				}
-				log.error("数据帧解析后的逻辑处理出现异常", e);
-				//throw new Iec104Exception("I帧响应帧编译出错");
+				log.error("数据帧解析后的逻辑处理出现异常:{}", e.getMessage());
 			}
 		} else if (this.apciType == ApciType.S_FORMAT) {
 			bb = sHandleAndAnswer();

+ 1 - 0
protocol-iec104/src/main/java/wei/yigulu/iec104/exception/Iec104Exception.java

@@ -21,6 +21,7 @@ public class Iec104Exception extends Exception {
 	 * @param msg msg
 	 */
 	public Iec104Exception(String msg) {
+		super(msg);
 		this.msg = msg;
 	}
 

+ 1 - 2
protocol-iec104/src/main/java/wei/yigulu/iec104/util/SendAndReceiveNumUtil.java

@@ -120,7 +120,6 @@ public class SendAndReceiveNumUtil {
 	 * @param link link
 	 */
 	public static void sendSFrame(Iec104Link link) {
-
 		if (link.getIReceive() != 0 && link.getIReceive() % INTERVAL == 0) {
 			Apdu apdu1 = new Apdu();
 			apdu1.setReceiveSeqNum(link.getIReceive());
@@ -128,7 +127,7 @@ public class SendAndReceiveNumUtil {
 			try {
 				byte[] bs = apdu1.encode();
 				//TODO  改变日志模式
-				link.getLog().debug("发送s帧:" + DataConvertor.Byte2String(bs));
+				link.getLog().info("发送s帧:" + DataConvertor.Byte2String(bs));
 				link.getChannel().writeAndFlush(Unpooled.copiedBuffer(bs));
 			} catch (Exception e) {
 				e.printStackTrace();

+ 4 - 0
protocol-iec104/src/test/java/ClientTest.java

@@ -1,3 +1,5 @@
+import io.netty.buffer.PooledByteBufAllocator;
+import io.netty.util.internal.PlatformDependent;
 import wei.yigulu.iec104.nettyconfig.Iec104HSMasterBuilder;
 import wei.yigulu.iec104.util.SendDataFrameHelper;
 
@@ -14,9 +16,11 @@ public class ClientTest {
     public static void main(String[] args) throws Exception {
         Iec104HSMasterBuilder a = new Iec104HSMasterBuilder("127.0.0.1", 2404);
         a.createByUnBlock();
+
         Thread.sleep(5000L);
         for (;;){
             Thread.sleep(3000L);
+            System.out.println( );
             SendDataFrameHelper.sendTotalSummonFrame(a.getFuture().channel(),1,6,a.getLog());
         }
 

+ 12 - 4
protocol-iec104/src/test/java/SlaveTest.java

@@ -10,13 +10,21 @@ public class SlaveTest {
 
 	public static void main(String[] args) throws Exception {
 		Iec104SlaverBuilder slaverBuilder = new Iec104SlaverBuilder(2404);
-		slaverBuilder.getConnectFilterManager().appendFilter((c)-> {
-			if (slaverBuilder.getChannels().size() >= 1) {
+		slaverBuilder.createByUnBlock();
+		for (;;){
+			if(slaverBuilder.getChannels().size()>0) {
+				slaverBuilder.getChannels().get(0).close();
+			}
+			Thread.sleep(6000L);
+		}
+		/*slaverBuilder.getConnectFilterManager().appendFilter((c)-> {
+			if (slaverBuilder.getChannels().size() > 1) {
 				return -1;
 			}
 			return 1;
-		});
-		slaverBuilder.create();
+		});*/
+
+
 	}