基于CAPL的CrcHelper DLL的应用

基于CAPL的CrcHelper DLL的应用

    • 1. CRC算法原理
    • 2. CrcHelper 介绍
    • 3. CrcHelper 应用

1. CRC算法原理

CRC 全称为Cyclic Redundancy Check循环冗余检验,是基于数据计算一组效验码,用于核对数据传输过程中是否被更改或传输错误。
有兴趣的可以参考: 循环冗余检验 (CRC) 算法原理.

2. CrcHelper 介绍

对于如何创建CAPL DLL可以参考 关于CAPL中Seed2Key DLL生成与调用
CrcHelper 集成了常用的CRC8, CRC16, CRC32,CRC64.基于CAPL的CrcHelper DLL的应用_第1张图片

3. CrcHelper 应用

on start
{
  int i;
  /*Init source data is 0---9*/
  for(i=0;i<dataLen;i++)
  {
    srcdata[i]=i;
  }
}

on key 'a'
{
  /*CRC16 CCITT Table BE-Out*/
  byte startData[2]={0xFF,0xFF};
  byte ResData[2];
  dllCRC16Cals(srcdata,dataLen,startData,1,ResData);
  write("Data: %x %x %x %x %x %x %x %x %x %x",
         srcdata[0],srcdata[1],srcdata[2],srcdata[3],srcdata[4],
         srcdata[5],srcdata[6],srcdata[7],srcdata[8],srcdata[9]);
  /*Result: C2 41*/
  write("CRC16Cals result: %x %x",ResData[0],ResData[1]);
}

on key 'b'
{
  byte startData[4]={0xFF,0xFF,0xFF,0xFF};
  byte ResData[4];
  dllCRC32Cals(srcdata,dataLen,startData,1,ResData);
  write("Data: %x %x %x %x %x %x %x %x %x %x",
         srcdata[0],srcdata[1],srcdata[2],srcdata[3],srcdata[4],
         srcdata[5],srcdata[6],srcdata[7],srcdata[8],srcdata[9]);
  /*Result: 45 6C D7 46*/
  write("CRC32Cals result: %x %x %x %x",ResData[0],ResData[1],ResData[2],ResData[3]);
}

on key 'c'
{
  byte startData[4]={0xFF,0xFF,0xFF,0xFF};
  byte ResData[4];
  dllCRC32P4Cals(srcdata,dataLen,startData,1,ResData);
  write("Data: %x %x %x %x %x %x %x %x %x %x",
         srcdata[0],srcdata[1],srcdata[2],srcdata[3],srcdata[4],
         srcdata[5],srcdata[6],srcdata[7],srcdata[8],srcdata[9]);
  /*Result: 94 51 9C 58*/
  write("CRC32Cals result: %x %x %x %x",ResData[0],ResData[1],ResData[2],ResData[3]);
}

测试结果如下:基于CAPL的CrcHelper DLL的应用_第2张图片


欢迎关注六度杂货铺公众号, 回复 CrcHelper 即可索取。
在这里插入图片描述

你可能感兴趣的:(Canoe学习笔记)