我是这么做的,我先弄了个unit1.pas文件,专门用于打开、关闭、发送、接收串口的。然后在 DLL 中 调用unit1.pas文件实现串口的 DLL,以便其他程序使用。
   在unit1.pas文件中这么定义Tcomm的。
uses
    SysUtils, Classes, Windows, Dialogs, SPCOMM;
    type
      TMyComm=class(TComm)
    public
      procedure MyReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word);
    end;    
var
  mycomm:TMyComm;
  backmsg:string;implementation
procedure TMyComm.MyReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word);
var
  pStr:PChar;
begin
  pStr:= Buffer;
  backmsg:=string(pStr);
  showmessage(backmsg);
end;initialization    //初始化
  mycomm:=Tmycomm.Create(nil);
  mycomm.OnReceiveData:=mycomm.MyReceiveData;
finalization      //释放
  mycomm.Free;end;  打开串口、发送数据搜是可以的,就是接收不是很正常。
  假设我每发一个字符串,就会返回一个‘OK’,比如我程序中就发一个‘AT’,能返回一个‘OK’,但是当我发了‘AT’连着发了‘B’,那么只会等‘B’也发完才返回两个‘OK’,断电调试的时候,只发完‘A’是没有数据返回的。请问这是怎么回事。