我安装了控件cport4.10.按照官网的例程写了一个发送接收的程序:unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, CPort;type
  TForm1 = class(TForm)
    ComPort: TComPort;
    Memo: TMemo;
    Button_Open: TButton;
    Edit_Data: TEdit;
    Button_Send: TButton;
    procedure Button_OpenClick(Sender: TObject);
    procedure Button_SendClick(Sender: TObject);
    procedure ComPortRxChar(Sender: TObject; Count: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button_OpenClick(Sender: TObject);
begin
  if ComPort.Connected then
    ComPort.Close
  else
    ComPort.Open;
end;procedure TForm1.Button_SendClick(Sender: TObject);
var
  Str: String;
begin
  Str := Edit_Data.Text;
  ComPort.WriteStr(Str);
end;procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
  Str: String;
begin
  ComPort.ReadStr(Str, Count);
  Memo.Text := Memo.Text + Str;
end;end.
然后将电脑的串口第二根线和第三根线相连,以实现自发自收,但是奇怪的是程序无论如何是无法接受数据的。用官网的例程倒是可以实现。cport控件下载地址是:http://sourceforge.net/projects/comport/。请教高手们,你们到底是怎么触发的接收事件的?

解决方案 »

  1.   


    procedure Button_OpenClick(Sender: TObject);
    procedure Button_SendClick(Sender: TObject);这两个过程是我在界面上双击按钮自动生成的声明,然后在下面加入相关代码。但是接收的那个过程
    procedure ComPortRxChar(Sender: TObject; Count: Integer);是我手动添加的声明,后面的实现也是手动加入的,我怀疑是这里出问题了,但是我不知道怎么触发这个接收事件。已经被这个问题困扰了几天了,希望高手能过来解惑!!!不甚感激!
      

  2.   

    procedure ComPortRxChar(Sender: TObject; Count: Integer);这个不需要手动声明的,在
    cport的Events下面可以找到这个事件。
      

  3.   

    procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
    var
      Str:String;
      RcvData: array[0..1023] of byte;
      i:Integer;
    begin
      for i:=0 to 1023 do
          RcvData[i]:=0;
      ComPort.Read(RcvData, Count);
      Str:='';
      for i:=0 to Count-1 do
          Str:=Str+IntToHex(RcvData[i],2);
      Memo.Text := Memo.Text + Str;
    end;
      

  4.   

    你手动添加,但是没有关联到cport的对应事件中,看cport的属性中有事件页签,在那里找事件,双击
      

  5.   


    在他的属性栏中可以找到evRxChar,默认设置的是True,请问怎么关联?
      

  6.   


    只看到Events下面有几个属性:[evRxChar,evTxEmpty,evRxFlag,evRing,evBreak,evCTS,evDSR,evError,evRLSD,evRx80Full],双击无法进入啊。请教!