我想向串口发送十六进制字符串 当s='1b100000345d' 发送后只返回1b10 后边没返回来;如果s='1b102110345d'则可都接收到返回来为1b102110345d  ;为什么?程序如下:
procedure TForm1.Button1Click(Sender: TObject);//打开串口
begin
  Mscomm1.PortOpen :=true;
  Mscomm1.DTREnable :=true;
  Mscomm1.RTSEnable :=true;
end;procedure TForm1.Button3Click(Sender: TObject);//发送数据
var
  s,s1:string;
  i:integer;
begin
  s:='1b100000345d';
  for i:=0 to (length(s) div 2)-1 do
  begin
    s1:=s1+chr(strtoint('$'+ copy(s,i*2+1,2)));
  end;
  self.MSComm1.Output:=s1;
  sleep(20);
end;
end.procedure TForm1.MSComm1Comm(Sender: TObject);//mscomm事件
var
  recstr:string;
  strtemp:string;
  i:integer;
begin
 recstr:=MSComm1.input;
 strtemp:='';
  if Mscomm1.CommEvent = 2 then
  begin    
   for i:=1 to length(recstr)  do
    strtemp:=strtemp+IntToHex(Ord(recstr[i]),2);
    Memo1.text := Memo1.Text+strtemp;
  end;
end;