Modbus RTU CRC检验方法

时间:2009-03-15 02:52:39
【文件属性】:
文件名称:Modbus RTU CRC检验方法
文件大小:4KB
文件格式:RAR
更新时间:2009-03-15 02:52:39
控件 源码 计数类 资源 是我现在正在使用的,100%可用。function ModBusCRC(Data: string): string; //生成modbus CRC数据var CRC16Lo, CRC16Hi, CL, CH, UseHi, UseLo: Dword; i, index: integer;begin CRC16Lo := ; //CRC16Lo为CRC寄存器低8位 CRC16Hi := ; //CRC16Hi为CRC寄存器高8位 CL := $1; CH := ; // A001 H 是CRC-16多项式代码 for i := 1 to Length(Data) do begin CRC16Lo := CRC16Lo xor ord(Data[i]); //每一个数据与CRC寄存器异或 for index := 0 to 7 do begin UseHi := CRC16Hi; UseLo := CRC16Lo; CRC16Hi := CRC16Hi shr 1; CRC16Lo := CRC16Lo shr 1; //右移一位 if ((UseHi and $1) = $1) then //如果高位字节最后一位是1的话 CRC16Lo := CRC16Lo or $80; //低位字节右移后前面补1 if ((UseLo and $1) = $1) then //如果LSB 为1,则与多项式进行异或 begin CRC16Hi := CRC16Hi xor CH; CRC16Lo := CRC16Lo xor CL; end; end; end; Result := IntToHex(CRC16Lo, 2) + IntToHex(CRC16Hi, 2);end;
【文件预览】:
Project1.res
Unit1.dfm
Project1.cfg
Unit1.pas
Project1.dpr
Project1.dof

网友评论

  • 算是有参考价值吧
  • 很实用的,谢谢分享
  • 经实际调试,代码可以用!运行结果也是正确的。
  • 非常有用啊
  • 很实用的,谢谢分享
  • 可以用,很实用