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