再问串口编程 不管用哪种控件或者是API,如果向串口发数据后,硬件发回数据,都会有相应的事件发生,比如cport的OnRxChar,spcomm的OnRecviceData等,但是如果我把这个控件封闭进DLL后,事件就不会触发,不要和我说用TIMER,也不用线程,就用回调函数来实现,谁会,解决后再单独开帖给分,谢谢,最好给出源码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 系统是基于消息机制的,要想从DLL返回事件,首要条件就是要将应用程序的窗口句柄传递给DLL,不然,DLL无从响应消息。既然你也用过spcomm,从它的源码中,你就该明白它的事件产生和响应的机理。 杯具的是,这个DLL是没有界面的,所以无法获得HANDLE, Dll的导出函数,比如MySPCOMMCall(AHandle: THandle; ...);begin Application.Handle := AHandle; ...end;你的exe程序调用的时候:MySPCOMMCall(Application.Handle,...) 能不能给些实际的,咋都回答的这么不关疼痒不要都装高深,来点干的高手都走了,还是整个DELPHI版整体水平下降了 告诉你原因和方法你不去理解,反而对你好心帮助说成是装高深。还上升至delphi版整体水平的论调。不仅不学无术,而且狂妄浮躁。 通用的串口组件其实并非好用,应对一些简单的情况是方便的。稍一复杂,还不如直接用API ,代码量不会增加多少。 你这句话说的不对。官方提供了一个函数,可以让DLL有句柄,不知道你写过服务没有,服务也是没句柄的,但有办法让它虚拟一个句柄出来使用。 这种问题本身就没有完整的答案,别人只能给你提供思路dll中可以没有窗体,把你dll中的接收函数,作为一个回调函数让外部程序来处理就行了至于回调函数怎么写,我真解释不清楚呵呵,好像我说的也是狗P方法 原来的那个例子,完全可以触发的,注意到这句CPort.SyncMethod := smNone;DLL无需获得HANDLE一样可以 写一个与RxChar参数一致的方法,然后把com.OnRxChar指向那个方法,完全没有问题 谁用过LMD IDE-Tools的脚本控件? 求教delphi和其它语言程序共同编写的问题 问一个combobox的问题。。。。。菜 帮我弄一份GDI+的GDIPLUS.PAS,多谢! 呓语凌晨 这个有人知道么! 请问一个报表中可以同时用两个sub detail吗 金税接口问题!! 怎样清除缓冲区中的数据 多線程問題(在線等待) 菜鸟请教,怎么样等上一步代码执行完毕之后再执行下一步代码! 谁能帮我把delphi转成 bcb
MySPCOMMCall(AHandle: THandle; ...);
begin
Application.Handle := AHandle;
...
end;你的exe程序调用的时候:
MySPCOMMCall(Application.Handle,...)
不要都装高深,来点干的
高手都走了,还是整个DELPHI版整体水平下降了
不仅不学无术,而且狂妄浮躁。
你这句话说的不对。官方提供了一个函数,可以让DLL有句柄,不知道你写过服务没有,服务也是没句柄的,但有办法让它虚拟一个句柄出来使用。
dll中可以没有窗体,把你dll中的接收函数,作为一个回调函数让外部程序来处理就行了
至于回调函数怎么写,我真解释不清楚呵呵,好像我说的也是狗P方法
CPort.SyncMethod := smNone;
DLL无需获得HANDLE一样可以