From 50e25656434aa51df372c5b422490b60b4068af2 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Sat, 20 Apr 2024 00:07:37 +0800 Subject: [PATCH] =?UTF-8?q?1078-=E5=A4=84=E7=90=86=E5=88=86=E5=8C=85?= =?UTF-8?q?=E5=8F=91=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/vmp/jt1078/codec/decode/Jt808Decoder.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/codec/decode/Jt808Decoder.java b/src/main/java/com/genersoft/iot/vmp/jt1078/codec/decode/Jt808Decoder.java index f329eab33..1b7739b10 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/codec/decode/Jt808Decoder.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/codec/decode/Jt808Decoder.java @@ -47,15 +47,25 @@ public class Jt808Decoder extends ByteToMessageDecoder { Header header = new Header(); header.setMsgId(ByteBufUtil.hexDump(buf.readSlice(2))); header.setMsgPro(buf.readUnsignedShort()); + // 从消息属性中读取是否存在分包 + boolean isSubpackage = (header.getMsgPro() >>> 13 & 1) == 1; + System.out.println("是否存在分包: " + isSubpackage); if (header.is2019Version()) { + header.setVersion(buf.readUnsignedByte()); String devId = ByteBufUtil.hexDump(buf.readSlice(10)); header.setTerminalId(devId.replaceFirst("^0*", "")); + } else { header.setTerminalId(ByteBufUtil.hexDump(buf.readSlice(6)).replaceFirst("^0*", "")); } header.setSn(buf.readUnsignedShort()); - + if (isSubpackage) { + int packageCount = buf.readUnsignedShort(); + int packageNumber = buf.readUnsignedShort(); + System.out.println("消息总包数: " + packageCount); + System.out.println("包序号: " + packageNumber); + } Re handler = CodecFactory.getHandler(header.getMsgId()); if (handler == null) { log.error("get msgId is null {}", header.getMsgId());