From 071a8328823a2861f93ce556a4da3e4119cab1a3 Mon Sep 17 00:00:00 2001
From: panlili2024 <14743743+panlili2024@user.noreply.gitee.com>
Date: 星期四, 19 九月 2024 16:24:28 +0800
Subject: [PATCH] 完成金茂定制功能

---
 HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/Crc.java |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/Crc.java b/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/Crc.java
index 54a87db..759293f 100644
--- a/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/Crc.java
+++ b/HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/Crc.java
@@ -140,6 +140,38 @@
     }
 
 
+    private static int[] Modbus_crc_tab = new int[]
+            {
+                    0x0000, 0xCC01, 0xD801, 0x1400, 0xF001, 0x3C00, 0x2800, 0xE401,
+                    0xA001, 0x6C00, 0x7800, 0xB401, 0x5000, 0x9C01, 0x8801, 0x4400,
+            };
+
+    public static void CRC16_MODBUS(byte[] buffer, int len) {
+        int crc;
+        byte dat;
+        int i;
+        crc = 0XFFFF;
+        for (i = 0; i < len - 2; i++) {
+            dat = buffer[i];
+            crc = Modbus_crc_tab[(dat ^ crc) & 15] ^ (crc >> 4);
+            crc = Modbus_crc_tab[((dat >> 4) ^ crc) & 15] ^ (crc >> 4);
+        }
+        buffer[i] = (byte) (crc & 0xff);
+        buffer[i + 1] = (byte) (crc >> 8);
+    }
+
+    public static boolean CRC16_MODBUS_MATCH(byte[] buffer, int len) {
+        int crc;
+        byte dat;
+        int i;
+        crc = 0XFFFF;
+        for (i = 0; i < len - 2; i++) {
+            dat = buffer[i];
+            crc = Modbus_crc_tab[(dat ^ crc) & 15] ^ (crc >> 4);
+            crc = Modbus_crc_tab[((dat >> 4) ^ crc) & 15] ^ (crc >> 4);
+        }
+        return (buffer[i] & 0xFF) == (crc & 0xff) && (buffer[i + 1] & 0xFF) == (crc >> 8);
+    }
 
 //
 //    //    2.閫氫俊鍗忚

--
Gitblit v1.8.0