我用的控件是spcomm。当我发送一帧据之后,等待对方发送校验,当我收到正确校验码,就发送下一帧!我想请问在senddata中怎么写验证方法?......
procedure senddata;
 var
  i,temp1: integer;
  temp2: integer;
  viewint: integer;
 begin
  viewstring := '';
  framecount:=1;  //得到帧长度
  textlength := form1.Memo1.Lines.Count-1;
  framelength := (textlength+MaxBufLength) div MaxBufLength;
  restlength := textlength mod MaxBufLength;  //发送帧
  for i:= 1 to framelength do
   begin  //发送帧头
    if (framecount = 1) then
     begin
      for temp1 := 1 to 32 do
       begin
        ydstr:=$AA;
        form1.comm1.WriteCommData(@ydstr,1);
       end;
     end;    //发送@
    FrameStart := $40;
    form1.Comm1.WriteCommData(@FrameStart,1);    //发送地址
    target := $6200;
    source := $6100;
    form1.Comm1.WriteCommData(@target,2);
    form1.Comm1.WriteCommData(@source,2);    //发送帧计数
    form1.Comm1.WriteCommData(@framecount,1);    //发送控制命令
    Write := $57;
    Receive := $52;
    form1.Comm1.WriteCommData(@Write,1);
    form1.Comm1.WriteCommData(@Receive,1);
    UWrite := not Write;
    UReceive := not Receive;
    form1.Comm1.WriteCommData(@UWrite,1);
    form1.Comm1.WriteCommData(@UReceive,1);    //发送帧长
    if framecount < framelength then
     begin
      Write := 128;
      form1.Comm1.WriteCommData(@Write,1);
     end
    else
     begin
      form1.Comm1.WriteCommData(@restlength,1);
     end;    //发送数据帧
    //后续帧标志位
    //充填位
    if (framelength = framecount) then
     begin
      for temp2 := (framecount-1)*MaxBufLength to ((framecount-1)*MaxBufLength)+restlength do
       begin
        viewstring := form1.Memo1.Lines.Strings[temp2];
        viewint := strtoint(viewstring);
        form1.Comm1.WriteCommData(@viewint,1);
       end;      flg := $23;
      form1.Comm1.WriteCommData(@flg,1);
      if((restlength mod 2) = 0) then
       begin
        tcstate := $00;
        form1.Comm1.WriteCommData(@tcstate,1);
       end;
     end
    else
     begin
      for temp2 := ((framecount-1)*MaxBufLength) to ((MaxBufLength-1)+((framecount-1)*MaxBufLength)) do
       begin
        viewstring := form1.Memo1.Lines.Strings[temp2];
        viewint := strtoint(viewstring);
        form1.Comm1.WriteCommData(@viewint,1);
       end;
      flg := $2A;
      form1.Comm1.WriteCommData(@flg,1);
     end;    //奇校验
    Odd := form1.OddEven(1);   //偶校验
    Even := form1.OddEven(0);   //结束符
    endstate1 := $13;
    form1.Comm1.WriteCommData(@endstate1,1);
    endstate2 := $10;
    form1.Comm1.WriteCommData(@endstate2,1);    //帧计数;
    framecount:=framecount+1;
    //等待
    sleep(200);
   end;
 end;procedure TForm1.BitBtn1_click(Sender: TObject);
 begin
  senddata;
 end;procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
  BufferLength: Word);
 var
  i,j:integer;
  rsbuf: array[1..48] of byte;
  ACdata: array[1..48] of byte;
  AFdata: array[1..48] of byte;
 begin
  move(buffer^,pchar(@rsbuf)^,bufferlength);
  for i:=1 to bufferlength do
   begin
    viewstring:=viewstring+inttohex(rsbuf[i],2)+'';
    form1.Memo1.Clear;
    form1.Memo1.lines.add(viewstring);
   end;
 end;end.