1、发送程序
procedure TTFCOMM.Button1Click(Sender: TObject);
var
ok:string;
i:integer;
buf:array[0..5] of byte;
begin
  buf[0]:=byte($A1);
  buf[1]:=byte($f0);
  buf[2]:=byte($01);
  buf[3]:=byte($ff);
  buf[4]:=byte($ff);
  buf[5]:=byte($01);
  for i:=0 to 6 do
    begin
     if comm1.WriteCommData(@buf[i],2) then
       begin
        ok:=inttostr(i)+'-发送成功!';
        memo1.Lines.Add(ok);
       end
     else memo1.Lines.Add('发送失败!');
    end;
  if comm1.SendDataEmpty then
     begin
       showmessage('无数据');
     end
  else
     begin
       showmessage('有数据');
     end;
end;2、接收程序
procedure TTFCOMM.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
  BufferLength: Word);
var
  ri:integer;
  rbuf:array[0..1023] of byte;
begin
  move(buffer^,pchar(@rbuf)^,bufferlength);  //十六进制
  for ri:=0 to bufferlength do
    begin
      memo1.lines.add(inttohex(rbuf[ri],2));
    end;
end;大哥,大姐们求你们拉,帮我看看!通过上面的发送程序测试全部发送成功,通过comm1.SendDataEmpty测试缓寸或队列里也有数据,可是为什么接收程序没有反应啊(接收不到)!

解决方案 »

  1.   

    procedure TForm1.FormShow(Sender: TObject);
    begin
       comm1.StopComm;Comm2.StopComm;
       Comm1.StartComm;Comm2.StartComm;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
     s:string;
    begin
        s:=edit1.Text ;
        comm1.WriteCommData(pchar(s),length(edit1.Text));
    end;procedure TForm1.Comm2ReceiveData(Sender: TObject; Buffer: Pointer;
      BufferLength: Word);
      type ss=array[1..500] of char;
    var
     i:integer;
     str:^ss ;
    begin
        str:=buffer;
        for i:=1 to bufferlength do
        begin
           edit2.Text :=edit2.Text +str^[i]
        end;
    end;
    以上代碼可實現簡單COM1發送COM2接收的你可變通實現你要的功能要上不能收發查看一下你的
    線是否有問題
      

  2.   

    我没有串口的线,所以才com1口发,还用com1口收阿!我只是在练习,不至于还去弄个串口线吧!