var
  Form1: TForm1;
      viewstring   :string;
      i:integer;
      rbuf,sbuf:array[1..6]   of   byte;
implementation{$R *.dfm}procedure TForm1.Button2Click(Sender: TObject);
var
  str:Pchar;
  count:integer;
begin
  str:=pchar(edit3.Text);
  count:=length(str);
  if self.Comm1.WriteCommData(str,count) then
  else
    raise  exception.Create('发送错误');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  self.Comm1.StartComm;end;procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
  BufferLength: Word);
  var
      i   :integer;
  begin   
      viewstring   :='';
      move(buffer^,pchar(@rbuf)^,bufferlength);
      for   i   :=0   to   bufferlength   do
            viewstring   :=viewstring+inttohex(rbuf[i],2)+'';
      viewstring   :='接收'+viewstring;   
      showmessage('1');//这句根本没执行   
      memo1.Lines.Add(viewstring);
      memo1.Lines.Add('');   
      showmessage('2');
  end;end.我发送edit3.txt ,用memo1接收回来!为什么不能啊!请高手帮个忙看一下

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      self.Comm1.CommName:=edit1.Text;
      self.Comm1.BaudRate:=strtoint(edit2.Text);
      self.Comm1.ByteSize:=Tbytesize(3);
      self.Comm1.StopBits:=Tstopbits(0);
      self.Comm1.Parity:=tparity(0);
      try
        self.Comm1.StartComm;
      except
        raise exception.Create('打开串口失败!');
      end;  self.StatusBar1.Panels[0].Text:=edit1.text+'已打开';
      self.StatusBar1.Refresh;
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
      self.Comm1.StopComm;
      self.StatusBar1.Panels[0].Text:=edit1.text+'已关闭';
      self.StatusBar1.Refresh;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      str:Pchar;
      count:integer;
    begin
      str:=pchar(edit3.Text);
      count:=length(str);
      if self.Comm1.WriteCommData(str,count) then
        self.Memo1.Lines.Add('已发送'+inttostr(count)+'个字符')
      else
        raise  exception.Create('发送错误');
    end;procedure TForm1.Button4Click(Sender: TObject);
    begin
       close;
    end;procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
      BufferLength: Word);
    var
      str:string;
      strrecv:string;
    begin
      setlength(strrecv,bufferlength);
      move(buffer^,Pchar(strrecv)^,bufferLength);
      self.Memo2.Lines.Add('已收到:'+inttostr(bufferlength)+'字节的数据');
      self.Memo2.Lines.Add(strrecv);
    end;
      

  2.   

    Comm1ReceiveData 是接受串口发送过来的数据,自己发自己受是不可以的,另外与硬件通信的时候注意协议和端口的一致。