CRC16 校验计算

本文介绍了CRC16校验算法,并提供了两种C语言实现方式:使用Switch Case语句和函数。在Visual Studio 2022中,函数实现能在1个周期内完成计算,而Switch Case则需要多个周期。此外,还涉及了使用PLC ST语言创建CRC16计算功能块(FB)的详细步骤。
摘要由CSDN通过智能技术生成

CRC16 校验结算
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:使用多种方法死磕实现 CRC16的校验码计算


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

CRC16 算法的应用场景 :
1、Modbus RTU 中的校验码
2、欢迎补充


提示:以下是本篇文章正文内容,下面案例可供参考

一、CRC16 的算法

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、C语言实现

使用 IDE 工具 Visual Studio 2022 。

使用Switch case 语句,需要多个程序运行周期才能计算出结果。
使用 函数 方法,1个周期内便能计算出结果,拖长程序运行周期。

1.使用Switch Case 语句实现

代码如下(示例):



#include<stdio.h>
#include<string.h>

void main() {
   

    printf(" hello world ");

    int CRC_Buffer[255] = {
    0x01,0x03,0x40,0x28,0x00,0x0E };
    int  CRC_Size;

    CRC_Size = 6;
    int CRC_Init = 0;
    int POLY = 0;
    int dtn = 0;
    int sht = 0;
    int step = 0;

    int CRC_Init_old = 0;
    int CRC_Result = 0;


    //printf("sizeof short, %d\n", sizeof(short));

    _Bool CRC16_calculate;

    CRC16_calculate = 1;

    int CRC16_MSB, CRC16_LSB;

    while (CRC16_calculate)
    {
   
        printf(" +++++  while   ++++++ \n ");
        switch (step)
        {
       //printf(" Step 1 --- --- sht : %d\n " , sht); 
        case 0:
            CRC_Init = 0xffff;
            POLY = 0xA001;
            dtn = 0;
            step = 1;


            // printf(" Step 0 --- CRC_Init_old : -- %x\n", CRC_Init_old);
            // printf(" Step 0 --- CRC_Init     : -- %x\n", CRC_Init);
             //printf(" Step 0 --- POLY         : -- %x\n", POLY);
            break;
        case 1:

            sht = 0;

            //printf(" Step 1 --- --- sht : %d\n " , sht); 
            //printf(" Step 1 --- --- dtn : %d\n ", dtn);
            step = 2;
            break;
        case 2:
            printf(" Step 2 --- CRC_Buffer[dtn] : -- %x\n", CRC_Buffer[dtn]);
            CRC_Init =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值