再问串口编程
不管用哪种控件或者是API,如果向串口发数据后,硬件发回数据,都会有相应的事件发生,比如cport的OnRxChar,spcomm的OnRecviceData等,但是如果我把这个控件封闭进DLL后,事件就不会触发,不要和我说用TIMER,也不用线程,就用回调函数来实现,谁会,解决后再单独开帖给分,谢谢,最好给出源码
[解决办法]
系统是基于消息机制的,要想从DLL返回事件,首要条件就是要将应用程序的窗口句柄传递给DLL,不然,DLL无从响应消息。既然你也用过spcomm,从它的源码中,你就该明白它的事件产生和响应的机理。
[解决办法]
[解决办法]
Dll的导出函数,比如
MySPCOMMCall(AHandle: THandle; ...);
begin
Application.Handle := AHandle;
...
end;
你的exe程序调用的时候:
MySPCOMMCall(Application.Handle,...)
[解决办法]
通用的串口组件其实并非好用,应对一些简单的情况是方便的。稍一复杂,还不如直接用API ,代码量不会增加多少。
[解决办法]
[解决办法]
这种问题本身就没有完整的答案,别人只能给你提供思路
dll中可以没有窗体,把你dll中的接收函数,作为一个回调函数让外部程序来处理就行了
至于回调函数怎么写,我真解释不清楚
呵呵,好像我说的也是狗P方法
[解决办法]
用接口实现吧
[解决办法]
[解决办法]
原来的那个例子,完全可以触发的,注意到这句
- Delphi(Pascal) code
CPort.SyncMethod := smNone;