我想向串口发送十六进制字符串 当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;
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;
尽量避免用0做结束符 分隔符
帮忙呀