panlili2024
2024-09-19 071a8328823a2861f93ce556a4da3e4119cab1a3
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.通信协议