Explorar o código

小逻辑修改

weiyigulu %!s(int64=4) %!d(string=hai) anos
pai
achega
f1be3a9f21

+ 0 - 1
protocol-core/src/main/java/wei/yigulu/connectfilterofslave/ConnectFilterManager.java

@@ -1,7 +1,6 @@
 package wei.yigulu.connectfilterofslave;
 
 import io.netty.channel.Channel;
-
 import java.util.ArrayList;
 import java.util.List;
 

+ 1 - 0
protocol-core/src/main/java/wei/yigulu/netty/AbstractTcpSlaverBuilder.java

@@ -77,6 +77,7 @@ public abstract class AbstractTcpSlaverBuilder extends BaseProtocolBuilder {
 	public void create() throws Exception {
 		// 服务器异步创建绑定
 		ChannelFuture cf = getOrCrateServerBootstrap().bind().sync();
+		this.fatherChannel=cf.channel();
 		log.info("Slaver端启动成功;端口" + port);
 		// 关闭服务器通道
 		cf.channel().closeFuture().sync();

+ 11 - 0
protocol-modbus/src/main/java/wei/yigulu/modbus/domain/ModbusSlaveDataContainer.java

@@ -2,6 +2,11 @@ package wei.yigulu.modbus.domain;
 
 
 import com.google.common.primitives.Bytes;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import wei.yigulu.modbus.domain.datatype.BooleanModbusDataInCoil;
 import wei.yigulu.modbus.domain.datatype.CoilValue;
 import wei.yigulu.modbus.domain.datatype.Register;
@@ -25,6 +30,12 @@ import java.util.concurrent.CopyOnWriteArrayList;
  */
 public class ModbusSlaveDataContainer {
 
+	@Setter
+	@Getter
+	@Accessors(chain = true)
+	private Logger log = LoggerFactory.getLogger(this.getClass());
+
+
 	Map<Integer, DataDrawer> slaveDataDrawer = new ConcurrentHashMap<>();
 
 

+ 2 - 2
protocol-modbus/src/main/java/wei/yigulu/modbus/netty/HSModbusTcpMasterBuilder.java

@@ -10,7 +10,7 @@ import wei.yigulu.netty.ProtocolChannelInitializer;
 
 
 /**
- * 104的主站  向子站发送总召唤 获取子站的数据
+ * modbus的主站  向子站发送总召唤 获取子站的数据
  * <p>
  * 主备模式的 主站 可以切换主备机
  *
@@ -21,7 +21,7 @@ import wei.yigulu.netty.ProtocolChannelInitializer;
 @Accessors(chain = true)
 public class HSModbusTcpMasterBuilder extends AbstractHSTcpMasterBuilder implements ModbusMasterBuilderInterface {
 
-	private SynchronousWaitingRoom synchronousWaitingRoom;
+	protected SynchronousWaitingRoom synchronousWaitingRoom;
 
 	public HSModbusTcpMasterBuilder(String ip, Integer port) {
 		super(ip, port);

+ 1 - 1
protocol-modbus/src/main/java/wei/yigulu/modbus/netty/ModbusRtuSlaverBuilder.java

@@ -22,7 +22,7 @@ import wei.yigulu.purejavacomm.PureJavaCommChannel;
 public class ModbusRtuSlaverBuilder extends AbstractRtuModeBuilder {
 
 	@Getter
-	private ModbusSlaveDataContainer modbusSlaveDataContainer = new ModbusSlaveDataContainer();
+	private ModbusSlaveDataContainer modbusSlaveDataContainer = new ModbusSlaveDataContainer().setLog(getLog());
 
 
 	public ModbusRtuSlaverBuilder(String commPortId) {

+ 8 - 3
protocol-modbus/src/main/java/wei/yigulu/modbus/netty/ModbusRtuSlaverHandler.java

@@ -10,6 +10,7 @@ import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import wei.yigulu.modbus.domain.request.RtuModbusRequest;
 import wei.yigulu.modbus.domain.response.RtuModbusResponse;
+import wei.yigulu.modbus.exceptiom.ModbusException;
 import wei.yigulu.modbus.utils.ModbusResponseDataUtils;
 import wei.yigulu.utils.DataConvertor;
 
@@ -74,9 +75,13 @@ public class ModbusRtuSlaverHandler extends SimpleChannelInboundHandler<ByteBuf>
 		if (msg.readableBytes() > MINLEN) {
 			RtuModbusRequest request = new RtuModbusRequest().decode(msg.nioBuffer());
 			RtuModbusResponse response = new RtuModbusResponse();
-			byte[] bbs = ModbusResponseDataUtils.buildResponse(this.modbusSlaver.getModbusSlaveDataContainer(), request, response);
-			ctx.writeAndFlush(Unpooled.copiedBuffer(bbs));
-			modbusSlaver.getLog().debug("se =>" + DataConvertor.Byte2String(bbs));
+			try {
+				byte[] bbs = ModbusResponseDataUtils.buildResponse(this.modbusSlaver.getModbusSlaveDataContainer(), request, response);
+				ctx.writeAndFlush(Unpooled.copiedBuffer(bbs));
+				modbusSlaver.getLog().debug("se =>" + DataConvertor.Byte2String(bbs));
+			}catch (ModbusException e){
+				log.error(e.getMsg());
+			}
 		}
 	}
 }

+ 2 - 2
protocol-modbus/src/main/java/wei/yigulu/modbus/netty/ModbusTcpMasterBuilder.java

@@ -11,7 +11,7 @@ import wei.yigulu.netty.ProtocolChannelInitializer;
 
 
 /**
- * 104的主站  向子站发送总召唤 获取子站的数据
+ * modbus的主站  向子站发送总召唤 获取子站的数据
  * <p>
  * 简单的主站  相对于主备机主站    仅有主机 不支持切换
  *
@@ -23,7 +23,7 @@ import wei.yigulu.netty.ProtocolChannelInitializer;
 public class ModbusTcpMasterBuilder extends AbstractTcpMasterBuilder implements ModbusMasterBuilderInterface {
 
 
-	private SynchronousWaitingRoom synchronousWaitingRoom;
+	protected SynchronousWaitingRoom synchronousWaitingRoom;
 
 	/**
 	 * 构造方法

+ 1 - 1
protocol-modbus/src/main/java/wei/yigulu/modbus/netty/ModbusTcpSlaverBuilder.java

@@ -22,7 +22,7 @@ public class ModbusTcpSlaverBuilder extends AbstractTcpSlaverBuilder {
 
 
 	@Getter
-	private ModbusSlaveDataContainer modbusSlaveDataContainer = new ModbusSlaveDataContainer();
+	private ModbusSlaveDataContainer modbusSlaveDataContainer = new ModbusSlaveDataContainer().setLog(getLog());
 
 	public ModbusTcpSlaverBuilder(int port) {
 		super(port);

+ 8 - 3
protocol-modbus/src/main/java/wei/yigulu/modbus/netty/ModbusTcpSlaverHandle.java

@@ -9,6 +9,7 @@ import lombok.NoArgsConstructor;
 import org.slf4j.Logger;
 import wei.yigulu.modbus.domain.request.TcpModbusRequest;
 import wei.yigulu.modbus.domain.response.TcpModbusResponse;
+import wei.yigulu.modbus.exceptiom.ModbusException;
 import wei.yigulu.modbus.utils.ModbusResponseDataUtils;
 import wei.yigulu.utils.DataConvertor;
 
@@ -46,9 +47,13 @@ public class ModbusTcpSlaverHandle extends ChannelInboundHandlerAdapter {
 		TcpModbusRequest request = new TcpModbusRequest().decode(byteBuf.nioBuffer());
 		TcpModbusResponse response = new TcpModbusResponse();
 		response.setTcpExtraCode(request.getTcpExtraCode());
-		byte[] bbs = ModbusResponseDataUtils.buildResponse(this.slaverBuilder.getModbusSlaveDataContainer(), request, response);
-		ctx.writeAndFlush(Unpooled.copiedBuffer(bbs));
-		log.debug("se =>" + DataConvertor.Byte2String(bbs));
+		try {
+			byte[] bbs = ModbusResponseDataUtils.buildResponse(this.slaverBuilder.getModbusSlaveDataContainer(), request, response);
+			ctx.writeAndFlush(Unpooled.copiedBuffer(bbs));
+			log.debug("se =>" + DataConvertor.Byte2String(bbs));
+		}catch (ModbusException e){
+			log.error(e.getMsg());
+		}
 	}