求校验和的问题

zhudongpo 2005-07-15 02:45:04
procedure A8051tran(Data:string); //以16进制形式下载
var
Len:integer; //数据长度
SendStr:string; //发送的数据
ChkSum:integer; //校验和
I:integer; //求校验和时的循环变量
begin
ChkSum:=0;
SendStr:=''; //清空传送字串
Len:=Length(Data);
SendStr:=chr($FA)+chr($FB)+chr($FD)+chr(Len)+Data;
for i:=1 to length(SendStr) do
chksum:=chksum+ord(sendstr[i]);
chksum:=chksum mod 256; //检查码
SendStr:=SendStr+chr(chksum); //CR
sleep(10);
F_Main.Comm1.WriteCommData(pchar(SendStr) ,length(SendStr));
Sleep(10);
end;

上面使我的发送函数,比如Data为“?”时经过上面函数的处理,通过串口助手16进制接收
得到的 就是 FAFBFD013F32,现在我通过串口助手给计算机发送FAFBFB013F32,我需要根据
FAFBFB013F计算校验和,判定校验位是否正确,如果正确则说明发送中没有错误,因为现在的
数据是FAFBFB013F,而不是chr($FA)+chr($FB)+chr($FD)+chr(Len)+Data,不能在通过
for i:=1 to length(SendStr) do
chksum:=chksum+ord(sendstr[i]);
chksum:=chksum mod 256; //检查码
SendStr:=SendStr+chr(chksum); //CR
求校验和了
现在有2个问题
1:怎样求FAFBFD013F的校验和,校验和应该是32,该如何处理那,或者说 如何判断传来的数据是
正确的 ,通过何种方法?
2:怎样把3F变回发送?
...全文
120 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhudongpo 2005-07-21
  • 打赏
  • 举报
回复
自己顶一下。
zhudongpo 2005-07-18
  • 打赏
  • 举报
回复
请各位高手给看看,谢谢了
paranoia190 2005-07-15
  • 打赏
  • 举报
回复

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧