delphi avr 串口通讯
最近用m16和DELPHI7 做通讯。确定M16小板正常。用串口软件发送 fd 02 04 00 00 00 00 fe返回了正常数值,如图
http://cache.amobbs.com/bbs_upload782111/files_13/ourdev_426879.jpg
串口软件 (原文件名:1.jpg)
http://cache.amobbs.com/bbs_upload782111/files_13/ourdev_426880.jpg
串口监控 (原文件名:2.jpg)
delphi 7 中接收数据正常
http://cache.amobbs.com/bbs_upload782111/files_13/ourdev_426875.jpg
接收数据 (原文件名:3.jpg)
delphi 7 中发送数据在串口监控软件中正常,但是单片机没任何反应,发送的数据他串口软件的一样啊。
http://cache.amobbs.com/bbs_upload782111/files_13/ourdev_426876.jpg
(原文件名:4.jpg)
不能理解,谁有碰到过吗,那个高手帮帮我
发送代码
procedure senddata;
var
i,j: integer;
commflg:boolean;
viewstring:string;
sbuf:array of byte;
s1,s2:string;
begin
s1:=fcomm.Edit1.Text;
viewstring:='';
commflg:=true;
s2:='';
for i:=1 to length(s1) do
begin
if((copy(s1,i,1)>='0')and(copy(s1,i,1)<='9'))or
((copy(s1,i,1)>='a')and(copy(s1,i,1)<='f'))or
((copy(s1,i,1)>='A')and(copy(s1,i,1)<='F')) then
begin
s2:=s2+copy(s1,i,1);
end;
end;
j:=length(s2) div 2;
sbuf:=byte($fd);
sbuf:=byte($02);
sbuf:=byte(j);
sbuf:=byte($fe);//sbuf xor sbuf;
for i:=1 to j do
begin
sbuf:=strtoint('$'+copy(s2,i*2-1,2));
end;
for i:=3 to j+3 do
begin
sbuf:=byte($fe);//sbuf xor sbuf;
end;
for i:=1 to j+4 do
begin
empty:=false;
if((not fcomm.Comm1.WriteCommData(@sbuf,1))) then
begin
commflg:=false;
break;
end;
repeat
sleep(1);
until (not empty) or (not commflg);
viewstring:=viewstring+inttohex(sbuf,2)+'';
end;
viewstring := '发送'+viewstring;
fcomm.Memo1.Lines.Add(viewstring);
if (not commflg) then messagedlg('发送失败!',mterror,,0);
end;
procedure TFCOMM.Comm1SendDataEmpty(Sender: TObject);
begin
empty:=true;
end; 串口助手里一次发送了8个字节,你自己写的一次就只发送一个字节
不知道我理解对不对 看看 你看下发送时的延时,是每个字节的延时
页:
[1]