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;
Delphi Modbus RTU CRC16校验码
最新推荐文章于 2025-10-19 11:53:44 发布
本文详细介绍了如何使用Delphi实现CRC16校验算法,包括算法原理、实现过程及应用实例。
329

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



