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变回发送?