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