iec104协议导包错误优化

This commit is contained in:
weitang 2025-05-27 16:25:26 +08:00
parent f3015b6a6f
commit 1bf9a2d40a
15 changed files with 78 additions and 81 deletions

View File

@ -10,6 +10,7 @@ import com.yfd.platform.component.iec104.message.MessageDetail;
import com.yfd.platform.component.iec104.message.MessageInfo; import com.yfd.platform.component.iec104.message.MessageInfo;
import com.yfd.platform.component.iec104.server.master.BootNettyClientChannel; import com.yfd.platform.component.iec104.server.master.BootNettyClientChannel;
import com.yfd.platform.component.iec104.server.master.BootNettyClientChannelCache; import com.yfd.platform.component.iec104.server.master.BootNettyClientChannelCache;
import com.yfd.platform.component.iec104.util.Iec104Util;
import com.yfd.platform.modules.auxcontrol.domain.DeviceSignal; import com.yfd.platform.modules.auxcontrol.domain.DeviceSignal;
import com.yfd.platform.modules.auxcontrol.domain.GatewayDevice; import com.yfd.platform.modules.auxcontrol.domain.GatewayDevice;
import com.yfd.platform.modules.auxcontrol.domain.MeterDevice; import com.yfd.platform.modules.auxcontrol.domain.MeterDevice;
@ -101,7 +102,7 @@ public class IIEC104Service {
// 发送序号 // 发送序号
short send = 0; short send = 0;
//控制欲 //控制欲
byte[] control = com.ydl.iec.util.Iec104Util.getIcontrol(accept, send); byte[] control = Iec104Util.getIcontrol(accept, send);
//类型标识 2D //类型标识 2D
TypeIdentifierEnum typeIdentifierEnum = null; TypeIdentifierEnum typeIdentifierEnum = null;
// 消息地址 总召唤地址为0 // 消息地址 总召唤地址为0

View File

@ -1,13 +1,13 @@
package com.yfd.platform.component.iec104.client; package com.yfd.platform.component.iec104.client;
import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.ObjUtil;
import com.ydl.iec.util.ByteUtil;
import com.yfd.platform.component.iec104.message.MessageDetail; import com.yfd.platform.component.iec104.message.MessageDetail;
import com.yfd.platform.component.iec104.message.MessageInfo; import com.yfd.platform.component.iec104.message.MessageInfo;
import com.yfd.platform.component.iec104.server.handler.ChannelHandler; import com.yfd.platform.component.iec104.server.handler.ChannelHandler;
import com.yfd.platform.component.iec104.server.handler.DataHandler; import com.yfd.platform.component.iec104.server.handler.DataHandler;
import com.yfd.platform.component.iec104.server.master.BootNettyClientChannel; import com.yfd.platform.component.iec104.server.master.BootNettyClientChannel;
import com.yfd.platform.component.iec104.server.master.BootNettyClientChannelCache; import com.yfd.platform.component.iec104.server.master.BootNettyClientChannelCache;
import com.yfd.platform.component.iec104.util.ByteUtil;
import com.yfd.platform.modules.auxcontrol.service.IDeviceSignalService; import com.yfd.platform.modules.auxcontrol.service.IDeviceSignalService;
import com.yfd.platform.modules.auxcontrol.service.IDeviceWorkDataService; import com.yfd.platform.modules.auxcontrol.service.IDeviceWorkDataService;
import com.yfd.platform.modules.auxcontrol.service.IGatewayDeviceService; import com.yfd.platform.modules.auxcontrol.service.IGatewayDeviceService;

View File

@ -7,8 +7,8 @@ import com.yfd.platform.component.iec104.message.MessageInfo;
import com.yfd.platform.component.iec104.enums.QualifiersEnum; import com.yfd.platform.component.iec104.enums.QualifiersEnum;
import com.yfd.platform.component.iec104.enums.TypeIdentifierEnum; import com.yfd.platform.component.iec104.enums.TypeIdentifierEnum;
import com.yfd.platform.component.iec104.enums.UControlEnum; import com.yfd.platform.component.iec104.enums.UControlEnum;
import com.ydl.iec.util.ByteUtil; import com.yfd.platform.component.iec104.util.ByteUtil;
import com.ydl.iec.util.Iec104Util; import com.yfd.platform.component.iec104.util.Iec104Util;
import java.io.IOException; import java.io.IOException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;

View File

@ -2,7 +2,7 @@ package com.yfd.platform.component.iec104.core;
import com.yfd.platform.component.iec104.common.Iec104Constant; import com.yfd.platform.component.iec104.common.Iec104Constant;
import com.yfd.platform.component.iec104.message.MessageDetail; import com.yfd.platform.component.iec104.message.MessageDetail;
import com.ydl.iec.util.Iec104Util; import com.yfd.platform.component.iec104.util.Iec104Util;
import com.yfd.platform.component.utils.OptimizedThreadPool; import com.yfd.platform.component.utils.OptimizedThreadPool;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import org.slf4j.Logger; import org.slf4j.Logger;

View File

@ -1,11 +1,11 @@
package com.yfd.platform.component.iec104.core; package com.yfd.platform.component.iec104.core;
import com.ydl.iec.util.Iec104Util;
import com.yfd.platform.component.iec104.message.MessageDetail; import com.yfd.platform.component.iec104.message.MessageDetail;
import com.yfd.platform.component.iec104.message.MessageInfo; import com.yfd.platform.component.iec104.message.MessageInfo;
import com.yfd.platform.component.iec104.enums.QualifiersEnum; import com.yfd.platform.component.iec104.enums.QualifiersEnum;
import com.yfd.platform.component.iec104.enums.TypeIdentifierEnum; import com.yfd.platform.component.iec104.enums.TypeIdentifierEnum;
import com.ydl.iec.util.ByteUtil; import com.yfd.platform.component.iec104.util.ByteUtil;
import com.yfd.platform.component.iec104.util.Iec104Util;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;

View File

@ -4,8 +4,8 @@ import com.yfd.platform.component.iec104.enums.QualifiersEnum;
import com.yfd.platform.component.iec104.enums.TypeIdentifierEnum; import com.yfd.platform.component.iec104.enums.TypeIdentifierEnum;
import com.yfd.platform.component.iec104.message.MessageDetail; import com.yfd.platform.component.iec104.message.MessageDetail;
import com.yfd.platform.component.iec104.message.MessageInfo; import com.yfd.platform.component.iec104.message.MessageInfo;
import com.ydl.iec.util.ByteUtil; import com.yfd.platform.component.iec104.util.ByteUtil;
import com.ydl.iec.util.Iec104Util; import com.yfd.platform.component.iec104.util.Iec104Util;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;

View File

@ -1,8 +1,7 @@
package com.yfd.platform.component.iec104.message; package com.yfd.platform.component.iec104.message;
import com.ydl.iec.util.Iec104Util;
import com.yfd.platform.component.iec104.enums.QualifiersEnum; import com.yfd.platform.component.iec104.enums.QualifiersEnum;
import com.yfd.platform.component.iec104.enums.TypeIdentifierEnum; import com.yfd.platform.component.iec104.enums.TypeIdentifierEnum;
import com.yfd.platform.component.iec104.util.Iec104Util;
import lombok.Data; import lombok.Data;
import java.util.ArrayList; import java.util.ArrayList;

View File

@ -3,9 +3,8 @@ package com.yfd.platform.component.iec104.server.handler;
import com.yfd.platform.component.iec104.common.Iec104Constant; import com.yfd.platform.component.iec104.common.Iec104Constant;
import com.yfd.platform.component.iec104.server.master.BootNettyClientChannel; import com.yfd.platform.component.iec104.server.master.BootNettyClientChannel;
import com.yfd.platform.component.iec104.server.master.BootNettyClientChannelCache; import com.yfd.platform.component.iec104.server.master.BootNettyClientChannelCache;
import com.ydl.iec.util.ByteUtil; import com.yfd.platform.component.iec104.util.ByteUtil;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.util.ReferenceCountUtil; import io.netty.util.ReferenceCountUtil;
@ -39,7 +38,7 @@ public class Check104Handler extends ChannelInboundHandlerAdapter {
result.readBytes(bytes); result.readBytes(bytes);
BootNettyClientChannel Channel= BootNettyClientChannelCache.get(ctx.channel().id().asShortText()); BootNettyClientChannel Channel= BootNettyClientChannelCache.get(ctx.channel().id().asShortText());
String slave_ip= Channel.getCode(); String slave_ip= Channel.getCode();
LOGGER.info( String.format("接收到从站[%s]发送的报文: %s", slave_ip,ByteUtil.byteArrayToHexString(bytes) )); LOGGER.info( String.format("接收到从站[%s]发送的报文: %s", slave_ip, ByteUtil.byteArrayToHexString(bytes) ));
if (bytes.length < Iec104Constant.APCI_LENGTH || bytes[0] != Iec104Constant.HEAD_DATA) { if (bytes.length < Iec104Constant.APCI_LENGTH || bytes[0] != Iec104Constant.HEAD_DATA) {
LOGGER.error("报文无效"); LOGGER.error("报文无效");
ReferenceCountUtil.release(result); ReferenceCountUtil.release(result);

View File

@ -1,16 +1,14 @@
package com.yfd.platform.component.iec104.server.handler; package com.yfd.platform.component.iec104.server.handler;
import com.yfd.platform.component.iec104.core.Iec104ThreadLocal;
import com.ydl.iec.util.Iec104Util;
import com.yfd.platform.component.iec104.core.Decoder104; import com.yfd.platform.component.iec104.core.Decoder104;
import com.yfd.platform.component.iec104.core.Iec104ThreadLocal;
import com.yfd.platform.component.iec104.message.MessageDetail; import com.yfd.platform.component.iec104.message.MessageDetail;
import com.ydl.iec.util.ByteUtil; import com.yfd.platform.component.iec104.util.ByteUtil;
import com.yfd.platform.component.iec104.util.Iec104Util;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.handler.codec.ByteToMessageDecoder; import io.netty.handler.codec.ByteToMessageDecoder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List; import java.util.List;

View File

@ -2,10 +2,10 @@ package com.yfd.platform.component.iec104.server.handler;
import com.yfd.platform.component.iec104.core.Iec104ThreadLocal; import com.yfd.platform.component.iec104.core.Iec104ThreadLocal;
import com.ydl.iec.util.Iec104Util;
import com.yfd.platform.component.iec104.core.Encoder104; import com.yfd.platform.component.iec104.core.Encoder104;
import com.yfd.platform.component.iec104.message.MessageDetail; import com.yfd.platform.component.iec104.message.MessageDetail;
import com.ydl.iec.util.ByteUtil; import com.yfd.platform.component.iec104.util.ByteUtil;
import com.yfd.platform.component.iec104.util.Iec104Util;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder; import io.netty.handler.codec.MessageToByteEncoder;
@ -35,7 +35,7 @@ public class DataEncoder extends MessageToByteEncoder<MessageDetail> {
} }
bytes[10] = terminalAddressBytes[0]; bytes[10] = terminalAddressBytes[0];
bytes[11] = terminalAddressBytes[1]; bytes[11] = terminalAddressBytes[1];
String hexString=ByteUtil.byteArrayToHexString(bytes); String hexString= ByteUtil.byteArrayToHexString(bytes);
log.info(hexString); log.info(hexString);
out.writeBytes(bytes); out.writeBytes(bytes);

View File

@ -1,8 +1,8 @@
package com.yfd.platform.component.iec104.server.handler; package com.yfd.platform.component.iec104.server.handler;
import com.yfd.platform.component.iec104.common.Iec104Constant; import com.yfd.platform.component.iec104.common.Iec104Constant;
import com.ydl.iec.util.Iec104Util; import com.yfd.platform.component.iec104.util.ByteUtil;
import com.ydl.iec.util.ByteUtil; import com.yfd.platform.component.iec104.util.Iec104Util;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.channel.ChannelInboundHandlerAdapter;

View File

@ -4,8 +4,8 @@ import com.yfd.platform.component.iec104.core.Iec104ThreadLocal;
import com.yfd.platform.component.iec104.enums.UControlEnum; import com.yfd.platform.component.iec104.enums.UControlEnum;
import com.yfd.platform.component.iec104.server.master.BootNettyClientChannel; import com.yfd.platform.component.iec104.server.master.BootNettyClientChannel;
import com.yfd.platform.component.iec104.server.master.BootNettyClientChannelCache; import com.yfd.platform.component.iec104.server.master.BootNettyClientChannelCache;
import com.ydl.iec.util.ByteUtil; import com.yfd.platform.component.iec104.util.ByteUtil;
import com.ydl.iec.util.Iec104Util; import com.yfd.platform.component.iec104.util.Iec104Util;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.channel.ChannelInboundHandlerAdapter;

View File

@ -1,9 +1,9 @@
package com.yfd.platform.component.iec104.server.slave.handler; package com.yfd.platform.component.iec104.server.slave.handler;
import com.yfd.platform.component.iec104.common.BasicInstruction104; import com.yfd.platform.component.iec104.common.BasicInstruction104;
import com.ydl.iec.util.Iec104Util;
import com.yfd.platform.component.iec104.enums.UControlEnum; import com.yfd.platform.component.iec104.enums.UControlEnum;
import com.ydl.iec.util.ByteUtil; import com.yfd.platform.component.iec104.util.ByteUtil;
import com.yfd.platform.component.iec104.util.Iec104Util;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.channel.ChannelInboundHandlerAdapter;

View File

@ -1,4 +1,4 @@
package com.ydl.iec.util; package com.yfd.platform.component.iec104.util;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.util.Calendar; import java.util.Calendar;

View File

@ -1,4 +1,4 @@
package com.ydl.iec.util; package com.yfd.platform.component.iec104.util;
import com.yfd.platform.component.iec104.message.MessageDetail; import com.yfd.platform.component.iec104.message.MessageDetail;
import com.yfd.platform.component.iec104.enums.TypeIdentifierEnum; import com.yfd.platform.component.iec104.enums.TypeIdentifierEnum;