我要在串口中提采数据,所用的控件为SPCOMM。我向串口发送了信息。用别串口查看程序可看到串口中的信息,但SPCOMMR的onReceiveData事情没有触发。为何?(DELPHI6)程序如下:unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SPComm, Buttons, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Comm1: TComm;
Panel1: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
Panel2: TPanel;
Memo1: TMemo;
Panel3: TPanel;
Button1: TButton;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
Edit1: TEdit;
Button6: TButton;
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
procedure Button6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
try
comm1.BaudRate:=19200;
comm1.CommName:='COM1';
comm1.StopComm;
comm1.StartComm;
speedbutton1.Enabled:=false;
speedbutton2.Enabled:=true;
except
speedbutton1.Enabled:=true;
speedbutton2.Enabled:=false;
end;
end;procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
comm1.StopComm;
speedbutton1.Enabled:=true;
speedbutton2.Enabled:=false;
end;procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
s:=trim(edit1.Text)+#13;
comm1.WriteCommData(pchar(s),length(s));
end;procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
s:string;
begin
setlength(s,bufferlength);
move(buffer^,pchar(s)^,bufferlength);
memo1.Lines.Add(s);
memo1.Lines.Add('>--------------------');
end;procedure TForm1.Button6Click(Sender: TObject);
begin
memo1.Clear;
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SPComm, Buttons, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Comm1: TComm;
Panel1: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
Panel2: TPanel;
Memo1: TMemo;
Panel3: TPanel;
Button1: TButton;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
Edit1: TEdit;
Button6: TButton;
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
procedure Button6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
try
comm1.BaudRate:=19200;
comm1.CommName:='COM1';
comm1.StopComm;
comm1.StartComm;
speedbutton1.Enabled:=false;
speedbutton2.Enabled:=true;
except
speedbutton1.Enabled:=true;
speedbutton2.Enabled:=false;
end;
end;procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
comm1.StopComm;
speedbutton1.Enabled:=true;
speedbutton2.Enabled:=false;
end;procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
s:=trim(edit1.Text)+#13;
comm1.WriteCommData(pchar(s),length(s));
end;procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
s:string;
begin
setlength(s,bufferlength);
move(buffer^,pchar(s)^,bufferlength);
memo1.Lines.Add(s);
memo1.Lines.Add('>--------------------');
end;procedure TForm1.Button6Click(Sender: TObject);
begin
memo1.Clear;
end;end.
[email protected]
[email protected]
另外试一下dtrControl和rtsControl设置一下。