SPCOMM 编写的 DLL问题
我是这么做的,我先弄了个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’是没有数据返回的。请问这是怎么回事。
[解决办法]
但是当我发了‘AT’连着发了‘B’,那么只会等‘B’也发完才返回两个‘OK’:发完一个命令,加换行符。at+#13
具体请发个你的代码,一起给分析下。
[解决办法]
楼主,你这数据接收到后,如何通知调用你这DLL的主程序呢?我也有疑惑