From 6f34a6a7e99d4015cd5e8bc3669eea9107ac5837 Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期四, 24 八月 2023 10:42:50 +0800 Subject: [PATCH] 开启防盗电定时器 --- src/main/java/com/ard/utils/tcp/MessageParsing.java | 37 +++++++++++++++++++++++++++++++++++-- 1 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/ard/utils/tcp/MessageParsing.java b/src/main/java/com/ard/utils/tcp/MessageParsing.java index 14aa3c5..92c9ef8 100644 --- a/src/main/java/com/ard/utils/tcp/MessageParsing.java +++ b/src/main/java/com/ard/utils/tcp/MessageParsing.java @@ -1,5 +1,7 @@ package com.ard.utils.tcp; +import com.ard.utils.other.ByteUtils; + import javax.xml.bind.DatatypeConverter; import java.util.ArrayList; import java.util.Arrays; @@ -44,6 +46,35 @@ } /** + * crc32鏍¢獙妫�鏌� + * 鍒樿嫃涔� + * 2023/7/4 11:24 + */ + public static Boolean CRC32Check(byte[] packet) { + //System.out.println(DatatypeConverter.printHexBinary(packet)); + int headerLength = 3;//鍖呭ご3涓瓧鑺� + int footerLength = 3;//鍖呭熬3涓瓧鑺� + int crcLength = 4;//crc鏍¢獙4涓瓧鑺� + //鍘绘帀鍖呭ご鍖呭熬 + byte[] payloadCrc32 = ByteUtils.removeHeaderAndFooter(packet, headerLength, footerLength); + //System.out.println(DatatypeConverter.printHexBinary(payloadCrc32)); + //鑾峰彇鍒版暟鎹惡甯︾殑crc32鍊� + byte[] oldCrc32 = ByteUtils.getLastBytes(payloadCrc32, crcLength); + //鍘绘帀鍖呭ご鍖呭熬crc32瀛楄妭锛屼粎淇濈暀璐熻浇 + byte[] payload = ByteUtils.removeHeaderFooterAndCRC(packet, headerLength, footerLength, crcLength); + // System.out.println(DatatypeConverter.printHexBinary(payload)); + //璁$畻璐熻浇鐨刢rc32鍊� + byte[] NewCrc32 = ByteUtils.parseCrc32(payload); + + //鍒ゆ柇鏁版嵁鐨刢rc32鏍¢獙鍊煎拰璁$畻鍊兼槸鍚︾浉鍚� + if (Arrays.equals(oldCrc32, NewCrc32)) { + return true; + } else { + return false; + } + } + + /** * 鑾峰彇鍖呯粨鏉熺储寮� */ public static int findPacketEndIndex(List<Byte> buffer, byte[] packetEnd) { @@ -78,8 +109,10 @@ * 鍘绘帀鍖呭ご鍜屽寘灏炬牎楠屽強杞箟 */ public static byte[] transferData(byte[] data) { - data = Arrays.copyOfRange(data, 3, data.length); - data = Arrays.copyOfRange(data, 0, data.length - 7); + int headerLength = 3;//鍖呭ご3涓瓧鑺� + int footerLength = 3;//鍖呭熬3涓瓧鑺� + int crcLength = 4;//crc鏍¢獙4涓瓧鑺� + data= ByteUtils.removeHeaderFooterAndCRC(data,headerLength,footerLength,crcLength); String dataStr = DatatypeConverter.printHexBinary(data); if (dataStr.contains("01020201")) {//杞箟01020201 dataStr = dataStr.replaceAll("01020201", "010201"); -- Gitblit v1.9.3