From:http://www.tty1.net/pycrc/tutorial_en.html
本教程指导您如何在你的程序中使用pycrc生成代码。它使用CRC代码的最简单和最通用的版本,其中所有的参数被定义。我们将生成头文件、CRC源文件和简单的主程序文件,使用GCC编译和检查结果。
如何运行pycrc.py
本节解释如何运行Python脚本。如果您知道如何运行它,那么请转到下一节。最安全的运行pycrc.py的方法是在命令行的开始添加python命令,如下:
python pycrc.py --help
在Unix-风格的系统中可以让pycrc.py变成可执行,并且如下命令进行调用:
chmod +x pycrc.py
./pycrc.py --help
生成代码
使用下面的命令生成头文件crc.h:
python pycrc.py --model crc-16 --algorithm table-driven --generate h –o crc.h
也使用类似的方法生成CRC源代码(crc.c):
Python pycrc.py --model crc-16 --algorithm table-driven --generate c –o crc.c
我们使用CRC-16模型和表驱动算法,你可以选择各种不同的模式,并且使用在pycrc man页中描述的命令行选项指定自己的模型。
编写main文件
下面是一个基本的main.c程序,用来计算字符串常量“123456789”的CRC.
#include <stdio.h>
#include <string.h>
#include "crc.h"
static char str[] = "123456789";
int main(void)
{
crc_t crc;
crc = crc_init();
crc = crc_update(crc, (unsigned char *)str, strlen(str));
crc = crc_finalize(crc);
printf("0x%lx\n", (unsigned long)crc);
return 0;
}
注意你能调用crc_update()多次,这意味着你不必一次计算整个数据的CRC。理论上你能够为输入数据的每个字节调用crc_update()。但是记住传递先前计算的crc值(例子中的crc变量)作为crc_update()的参数。
又一个例子,这里main程序每次一个字节的计算CRC值,显然代码得到与上面代码相同的结果。
int main(void)
{
crc_t crc;
int i;
crc = crc_init();
for (i = 0; i < strlen(str); i++) {
crc = crc_update(crc, (unsigned char *)&str[i], 1);
}
crc = crc_finalize(crc);
printf("0x%lx\n", (unsigned long)crc);
return 0;
}
编译和执行
下面的两行编译源代码并且调用二进制文件,希望你能得到希望的结果0Xbb3d。
gcc -W -Wall -std=c99 crc.c main.c –o crc
./crc
验证结果
现在检查二进制程序是否给你所希望的结果:
python pycrc.py --model crc-16
你也能验证结果使用在线的计算器,例如:breitbandkatze.de网站上的CRC计算器(http://www.zorc.breitbandkatze.de/crc.html)。
提示
一个更复杂的main.c文件可以使用pycrc的--generate c-main命令行参数来生成。注意这个选项把crc.c文件和main.c文件合并到一个输出文件中。如果你不确定如何调用crc函数,请使用这个选项。
Pycrc帮助页中包括如何使用pycrc的其它一些例子。
分享到:
相关推荐
cantools python语言 ,can dbc文件自动生成 excel 、C语言代码
c语言crc8校验源代码
32位CRC校验c语言代码,参数:内容,长度,种子值,直接调接口即可使用。
C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言烟花代码C语言...
talflow是拥有完全自主知识产权的国产软件,是talmodeler(基于模型的软件全过程开发环境)的核心组成部分,主要功能是创建软件各功能的流程图模型并基于流程图模型自动生成c代码。在自研相关技术的支撑下,应用...
已验证可用的CRC16计算代码,下载可用
C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言...
C语言代码自动整理工具 ,自动生成程序流程图 C语言代码自动整理工具 ,自动生成程序流程图 有必要要这么多摘要么?
c语言烟花代码c语言烟花代码c语言烟花代码c语言烟花代码c语言烟花代码c语言烟花代码c语言烟花代码c语言烟花代码c语言烟花代码c语言烟花代码c语言烟花代码c语言烟花代码c语言烟花代码c语言烟花代码c语言烟花代码c语言...
C语言迷宫程序代码 具有自动生成迷宫、自动输出路径的功能
C语言代码自动整理工具
CRC16_CCITT、CRC16_XMODEM、CRC16_MODBUS、CRC16_MAXIM、CRC16_USB的C语言代码
C语言实现标准CRC16校验 ,文件包含crc.h 和crc.c,有问题可以 私聊我 q-175-543-7233
================================================================ cdocgen - A C-file documentation generator =========================================...生成visio格式的流程图,并可以自动插入到详细设计中。
爱心代码c语言爱心代码c语言爱心代码c语言爱心代码c语言爱心代码c语言爱心代码c语言爱心代码c语言爱心代码c语言爱心代码c语言爱心代码c语言爱心代码c语言爱心代码c语言爱心代码c语言爱心代码c语言爱心代码c语言爱心...
CRC8 的实现算法X2+X+1的源代码。
crc16-ccitt 通过查表法实现,运算速度比较快,初始值为0xffff,并且是基于标准C语言的,并且已将CRC16运行程序封装成函数,只需要调用就好了,移植性强。
词法分析,递归下降的语法分析及四元式代码生成的C语言代码
talflow是拥有完全自主知识产权的国产软件,是talmodeler(基于模型的软件全过程开发环境)的核心组成部分,主要功能是创建软件各功能的流程图模型并基于流程图模型自动生成c代码。在自研相关技术的支撑下,应用...