From 4f946b31eb5ac311d53ef30ee66e8474f5a8fd39 Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Mon, 5 Aug 2024 10:35:19 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E7=94=B5=E5=8D=95=E8=BD=A6=E5=8D=8F?= =?UTF-8?q?=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../netty/domain/ChargingPileMessage.java | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/domain/ChargingPileMessage.java b/jsowell-netty/src/main/java/com/jsowell/netty/domain/ChargingPileMessage.java index ed3dde985..4ea1ab6e9 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/domain/ChargingPileMessage.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/domain/ChargingPileMessage.java @@ -7,6 +7,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; +import java.nio.charset.StandardCharsets; import java.util.Arrays; @Slf4j @@ -26,21 +27,34 @@ public class ChargingPileMessage { // 从字节数组解析消息 public static ChargingPileMessage parseMessage(byte[] messageBytes) { log.info("parseMessage:{}", BytesUtil.binary(messageBytes, 16)); - String header = new String(Arrays.copyOfRange(messageBytes, 0, 3)); + // 读取包头 + byte[] headerBytes = Arrays.copyOfRange(messageBytes, 0, 3); + System.out.println(new String(headerBytes, StandardCharsets.UTF_8)); - int length = ((messageBytes[3] & 0xFF) << 8) | (messageBytes[4] & 0xFF); + // 读取长度 + byte[] lengthBytes = {messageBytes[3], messageBytes[4]}; + System.out.println(BytesUtil.bcd2StrLittle(lengthBytes)); - int physicalId = ((messageBytes[5] & 0xFF) << 24) | ((messageBytes[6] & 0xFF) << 16) | - ((messageBytes[7] & 0xFF) << 8) | (messageBytes[8] & 0xFF); + // 读取物理ID + byte[] physicalIdBytes = Arrays.copyOfRange(messageBytes, 5, 9); + System.out.println(BytesUtil.bcd2StrLittle(physicalIdBytes)); - int messageId = ((messageBytes[9] & 0xFF) << 8) | (messageBytes[10] & 0xFF); + // 读取消息ID + byte[] messageIdBytes = {messageBytes[9], messageBytes[10]}; + System.out.println(BytesUtil.bcd2StrLittle(messageIdBytes)); + // 读取命令 byte command = messageBytes[11]; + System.out.println(BytesUtil.bcd2StrLittle(new byte[] {command})); + // 读取数据 byte[] data = Arrays.copyOfRange(messageBytes, 12, messageBytes.length - 2); + System.out.println(BytesUtil.bcd2StrLittle(data)); - int checksum = ((messageBytes[messageBytes.length - 2] & 0xFF) << 8) | (messageBytes[messageBytes.length - 1] & 0xFF); + // 读取校验 + byte[] checksumBytes = {messageBytes[messageBytes.length - 2], messageBytes[messageBytes.length - 1]}; + System.out.println(BytesUtil.bcd2StrLittle(checksumBytes)); - return new ChargingPileMessage(header, length, physicalId, messageId, command, data, checksum); + return null; } }