IMTP 发表于 2009-3-21 13:38:23

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;

icefall 发表于 2009-3-31 18:44:22

串口助手里一次发送了8个字节,你自己写的一次就只发送一个字节
不知道我理解对不对

382383706 发表于 2009-12-14 17:27:13

看看

jqfsjt 发表于 2009-12-19 22:27:27

你看下发送时的延时,是每个字节的延时

armecos 发表于 2009-12-20 14:49:50

页: [1]
查看完整版本: delphi avr 串口通讯