最近在做电表测试相关软件,开发过程需要学习698协议,网上关于698协议的资料很少。此文记录一下协议中关于帧头和整帧校验码算法,Java代码如下:
public class Test {
public static void main(String[] args) {
//定义一个字节数据用于测试
byte[] source= {0x2C ,0x00 ,0x43 ,0x05 ,0x50 ,0x10 ,0x10 ,0x42 ,0x00 ,0x00 ,(byte) 0xA1};
//调用方法 输出结果
System.out.println(bytesToHexFun2(CalcFCS16(source)));
}
//查询表
private static int[] iCRC_16_TABLE_8408 = new int[]{
0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
0xbdcb, 0xac42, 0x9ed9,