请教小弟我在dll中使用了spcomm控件,现在是怎么在dll中spcomm的WriteCommData方法里写代码,以及怎么在onReceiveData事件中写代码

请问我在dll中使用了spcomm控件,现在是如何在dll中spcomm的WriteCommData方法里写代码,以及如何在onReceiveData事件中写代码?
关于发送指令,我现在在dll中是这样写的:
function   sendcommdata(scomm:pchar):LongBool;stdcall;
var
      sinit6:string;
begin
          try
                comm1.CommName:=scomm;
                sinit6:=HexToStr( '6899999999999968050161CD16 ');
                Comm1.WriteCommData(Pchar(sinit6),Length(sinit6));
                Result:=true;
          except
                Result:=false;
          end;
end;

在调用程序的按扭上是这样写的:
procedure   TFCOMM.btnrestoreClick(Sender:   TObject);
begin
if   sendcommdata(slt_com.Text)   then
          //showmessage( '复位卡的初始化指令发送成功);
else
      messagedlg( '复位卡的初始化指令发送失败! ',mterror,[mbyes],0);
end;
现在的问题是:
1.上述的发送指令的方法和思路是否正确,各位是如何将发送指令的代码放在dll中的?
2.发送指令后,如何在dll中写代码来触发onReceiveData事件?
    我之前在窗体上放个spcomm控件,然后再在onReceiveData事件知道如何写代码,但现在不知道在dll中如何写触发onReceiveData事件的代码。

请各位高手指点,非常感谢。    


------解决方案--------------------
客气了,定义一个回调函数就可以了,就可以了,就相当于写控件的事件一样。
回调函数也是函数指针。只不过你没有经常使用而已。

回调函数类型的定义,Delphi已经定义了很多。如大部分事件类型,其实就是回调函数类型。
在这儿我要指出的是你在dll中写Function fun_Test ( pfun:P_FormFun) : integer ; stdcall;函数的时候,为何不在dll中定义P_FormFun的一个全局变量,专门来存储这个pfun回调函数啦。然后在mydllclass类中的串口接收事件中调用这个函数指针,那么这时候只要接收到数据就会调用你写的fun_addlog函数了。这个fun_addlog函数就是传说中的回调函数。能够及时响应串口事件哟!