Delphi SPCOMM串口以CDT规约发送数据的有关问题,对方收不到源码或只是乱码

Delphi SPCOMM串口以CDT规约发送数据的问题,对方收不到源码或只是乱码。
最近自己做一个小程序,用SPCOMM 的串口调试助手做基础,用COM3 接收数据(USB转COM的,已转为整数型),再用本机的COM1 以CDT规约发送数据出去,用了2个SPCOMM的控件,发现发送数据,对方收到源码或只收到乱码。
COM3 波特率9600 ,数据位8 停止位1 无校验,COM1 波特率600 ,数据位8 停止位1 无校验。相关代码如下:
是否发送格式不对或者发送数据间隔不匹配。
请指正。

Delphi(Pascal) code

procedure TFrmMain.btnSendClick(Sender: TObject);
{begin
sbuf[1]:=byte($eb); //帧头 
sbuf[2]:=byte($90); //命令号 
sbuf[3]:=byte($eb);
sbuf[4]:=byte($90);
sbuf[5]:=byte($eb);
sbuf[6]:=byte($90); //帧尾 
sbuf[7]:=byte($71);
sbuf[8]:=byte($61);
sbuf[9]:=byte($01);
sbuf[10]:=byte($00);
sbuf[11]:=byte($00);
sbuf[12]:=byte($2b); //帧尾 
sbuf[13]:=byte($00);
sbuf[14]:=byte($0a);
sbuf[15]:=byte($00);
sbuf[16]:=byte($14);
sbuf[17]:=byte($00);
sbuf[18]:=byte($60); //帧尾 
senddata;//调用发送函数
end;
}
var
 ss:string;
const
 tongbu='EB 90 EB 90 EB 90 71 61 04 01 01 1A ';
begin
  if cbsendHex.Checked then
    SendString(HexStrToStr(Memo3.Text))
  else
  begin
   Memo2.Text:=tongbu+'00 0'+copy(inttohex(wds,2),0,1)+' '+
   copy(inttohex(wds,2),1,2)+' 0'+copy(inttohex(sds,2),0,1)+' '+
   copy(inttohex(sds,2),1,2)+' EF 01 00 00 00 00 12';
   if Memo2.Text<>'' then
   SendString(Memo2.Text);
  end;
end;

procedure TFrmMain.SendString(const Str: string);
begin 
  if Comm2.WriteCommData(PChar(Str), Length(Str)) then
  begin 
    FTXNum := FTXNum + Cardinal(Length(Str));
    ShowTX;
  end;
end; 
 
procedure TFrmMain.senddata;
var
i:integer;
commflg:boolean;
begin
viewstring:='';
commflg:=true;
for i:=1 to 18 do
begin
if not FrmMain.Comm2.writecommdata(@sbuf[i],1) then
begin
commflg:=false;
break;
end;
sleep(10); {发送时字节间的延时}
viewstring:=viewstring+inttohex(sbuf[i],2)+' ';
end;
 FrmMain.memo1.lines.add(viewstring);
 FTXNum := FTXNum + 18;
 ShowTX;
if not commflg then messagedlg('发送失败!',mterror,[mbyes],0);
end;



------解决方案--------------------
writecommdata 可以直接发多字节
FrmMain.Comm2.writecommdata(@sbuf[i],18) then