function CheckCrc16(const ABuf; ALen: Integer): Boolean;
var
uwTemp: WORD;
i, j: BYTE;
P: PByte;
begin
Result := False;
P := PByte(@ABuf);
uwTemp := $FFFF;
for i := 1 to ALen do
begin
uwTemp := uwTemp xor P^;
for j := 1 to 8 do
begin
if (uwTemp and 1) = 1 then
uwTemp := (uwTemp shr 1) xor $A001
else
uwTemp := uwTemp shr 1
end;
Inc(P);
end;
if P^ = BYTE(uwTemp) then
begin
Inc(P);
if P^ = BYTE(uwTemp shr 8) then
begin
Result := True;
end
end
end;
相关推荐
Modbus CRC16校验与十进制小数转十六进制浮点数实战详解
今天我们完成了一场从理论到实践的完整穿越:我们学会了如何将3.14159转换为 IEEE 754 编码40490FD1掌握了大端/小端字节序的影响及应对策略构建了符合 Modbus RTU 规范的请求帧深入理解了 CRC16 的数学本质与实现细节实现了高效的查表法优化并给出了完整的 Delphi 示例代码这一整套流程不仅适用于 Modbus,也广泛存在于 CANopen、Profibus、TCP/IP 校验等各类工业通信协议中。
CRC.rar_crc_crc delphi_crc16 C语言_delphi crc_delphi crc16
c语言和delphi的crc16的求解代码
Delphi中CRC16校验的实现
CRC-16/IBM多项式是众多CRC16变种中的一个,广泛应用于不同的通信协议中。其多项式表示为:这种多项式的特点是能够检测出常见的多位错误。它在IBM的SDLC协议中使用,因而得名。源代码文件是一个使用Delphi语言编写的CRC16校验工具。该文件的代码结构被设计为模块化,以便于阅读和维护。它由多个函数和过程组成,每个组件都有明确的职责。代码中实现了CRC16校验码的计算,并为不同的应用场景提供了灵活的接口。
Delphi7 CRC16检验码计算
DELPHI7 开发的CRC16检验码小程序及源码;
delphi 版CRC16 查表算法
国为一个项目的原因需要delphi 版CRC16 查表算法,找了好久了,很多都不能用,有些算出来也不对。网上其它地方,需要的话就下吧。我的Delphi2009下测试能用。
Delphi包含8位16位32位的CRC校验算法示例代码
内容索引:Delphi源码,算法相关,算法,CRC 内含8位、16位、32位的CRC校验算法示例代码,生成多项式的值(多项式因子) 注意:CRC16是数据流的高位先计算,多项式因子不变 而CRC32和CRC8都是数据流的低位先计算,所以多项式因子的高/低位对调 比如CRC32由$04C11DB7变为$EDB88320,CRC8由$31变为$8C 16位CRC:按位计算,速度最慢,占用空间最少 注:数据流是高位先行 MCS51的CRC-16计算函数(多项式因子为$1021, 高位先行) ; 调用:CRC16H/CRC16L=原CRC16值(16位,初始值为0
Delphi CRC16校验码
unit untCRC16; interface uses Windows; /// <summary> /// CRC校验码(从厂家提供C语言翻译而来) /// </summary> /// <param name="crc_ini">$00</param> /// <param name="buf">&l
Delphi Modbus RTU CRC16校验码的生成方式
在很多的串口通讯中,会使用到CRC16校验。在TIdHashCRC16中,给我们提供了一种CRC校验码的生成方式:TIdHashCRC16继承于TIdHash16这个类,其中覆盖实现了两个方法: 然而,当我们直接使用TIdHashCRC16类生成校验码的时候,经常是与设备的校验不匹配的,其原因在于VRunningHash初始化时为0,而我们需要的初始化值应该为0xFFFF。所以,我们需要对这个类进行改造,其中最简单的办法就是找到IdHashCRC.pas文件,把VRunningHash:=0;这个修改为
如何使用Delphi编写Modbus RTU CRC16的校验码
如何使用Delphi编写Modbus RTU CRC16的校验码
CRC校验 (计算方式) 通用源码(兼容CRC4/5/6/7/8/16/32/自定义)
本文介绍了一个通用的CRC校验代码实现,支持多种CRC算法类型(CRC4-CRC32)。代码通过结构体数组存储不同CRC算法的参数(多项式、初始值、反转设置等),提供位反转和CRC计算函数。该实现采用直接计算法,适用于教学演示,但实际应用中建议使用查表法优化性能。文中还列出了21种常见CRC算法的配置参数及其应用场景(如Modbus、USB、MPEG2等),并展示了测试字符串"Hello World!"在不同CRC算法下的计算结果。
MODBUS通讯协议及编程
当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务;然后把执行结果返送给发送者。返送的信息中包括地址码、执行动作的功能码、执行动作后结果的数据以及错误校验码。如果出错就不发送任何信息。 1.信息帧结构 地址码:地址码是信息帧的第一字节(8位),从0到255。这个字节表明由用户设置地址的从机将接收由主机发送来的信息。每个从...
Delphi 16位CRC实例 难得的资源
做工控需要CRC校验,16位的校验好难找,好不容易看懂,自己总结出实例来。
Delphi CRC校验
Delphi CRC16校验运算函数,返回校验码根据实际需求替换位置 Delphi CRC16校验运算函数,返回校验码根据实际需求替换位置
crc16校验(delphi)
循环冗余校验码(CRC) CRC校验采用多项式编码方法。被处理的数据块可以看作是一个n阶的二进制多项式
crc16校验源码 c语言和delphi翻译
此代码针对单片机处理十六进制数据和字符串数据的crc16的校验值 附带c语言程序进行对比
16位CRC校验_Delphi
unit Modbus_main; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Bu...
计算ModBus CRC 校验码(delphi实现)
真后悔当初网络课没好好学,最近在编一个程序遇到一个CRC校验码的计算,左看右看,以前没有接触过这方面的编程,没办法,还好找了一大堆文字叙述的材料,终于搞定了.我的CRC的多项式是以ModBus 的A001(1010 0000 0000 0001) nit Unit1; interface uses Windows, Messages, SysUtils, Va
【原创】Delphi CRC校验码生成软件(CRC16、CRC32)
Delphi CRC校验码生成软件(CRC16、CRC32) 程序下载地址:CRC_Calc.rar 转载于:https://www.cnblogs.com/tangqs/archive/2011/12/08/2280255.html
778




被折叠的 条评论
为什么被折叠?



