推广 热搜:
 |  行业设备  |  机械制造  |  机器视觉  |  机械自动化  |  仪器仪表  |  工业机器人  |  编程开发  |  嵌入式  |  电子技术  |  工控自动化  |  电工电气 频道

Delphi Modbus RTU CRC16校验码

   日期:2018-04-15     浏览:104    评论:0    
核心提示:function CheckCrc16(const ABuf; ALen: Integer): Boolean;varuwTemp: WORD;i, j: BYTE;P: PByte;begin Result := False; P :=
 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;

 
打赏
 
更多>同类编程
0相关评论

推荐图文
推荐编程
点击排行

网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报