delphi串口接收数据

场景:delphi串口接收数据有关问题

delphi串口接收数据问题
我用spcomm控件进行串口数据的接收和发送,但是现在有一个问题,在接收数据的时候,通过下位机发来的数据,正常是10个字节,但是不知道为什么有的时候接收的是9个字节,有的时候是10个,随机的接收不全,程序是下面这个样子
procedure Twelcome.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
  BufferLength: Word);
var
  i: integer;
begin
  viewstring:='';
  move(buffer^,rbuf,bufferlength);
  //检查校验和
  if checksum(rbuf,bufferlength)=false then
    exit;
  //检查字头字尾
  if valid(rbuf)=false then
  exit;
  //检验是否为命令条
  if command(rbuf)=false then
  exit;
  //检查是否为指定站发来的信息
  if not zh=rbuf[4] then
  exit;

  for i:=1 to bufferlength do
  begin
    viewstring:=viewstring+inttohex(rbuf[i],2);
  end;
不知道这里有什么问题,是还要有一些判断之类的么?求帮助!
------解决方案--------------------
串口速度慢,接收完最好等几百毫秒再接收一次,以免漏掉滞后的数据